我正在使用当前版本4.0.3来映射一些MySQL表。但是,我已经在使用automapper创建映射时遇到了问题!原因:一个字节数组!只要添加像“byte()”(vb.net语法)这样的字节数组,我会得到一个异常:使用NHibernate 4映射byte []会抛出.net的数组异常
“数组上的通用接口的接口映射无法被修改。”
似乎这个异常来自.NET的更深层我认为,但事情是:我没有与流利的nhibernate映射这个问题! Fluent确实将我的字节数组映射成了我期望做的longblob。但是,NHibernate 4没有。不幸的是,当Fluent包含一些描述(例如“EmployeeId”)时,Fluent不够巧妙地映射我的Id-Properties。我需要将我的所有属性重命名为“Id”以避免手动映射。因此,我想使用NHibernates automapper,但它似乎无法处理任何类型的数组(我也试过使用整数数组,以及相同的例外情况)。有人有同样的问题吗?这里是我的代码:
Public Cfg As Configuration
Public Mapping As HbmMapping
Public SessionFactory As ISessionFactory
Public Sub New()
CreateConfig()
Map()
SessionFactory = Cfg.BuildSessionFactory()
End Sub
Public Sub CreateConfig()
Cfg = New Configuration()
Cfg.DataBaseIntegration(AddressOf DbIntegration)
End Sub
Private Shared Sub DbIntegration(c As IDbIntegrationConfigurationProperties)
c.ConnectionString = "Server=xxx;Port=3306;Database=xxx;User ID=xxx;Password=xxx;"
c.Driver(Of MySqlDataDriver)()
c.Dialect(Of MySQL55Dialect)()
c.LogSqlInConsole = True
c.LogFormattedSql = True
c.AutoCommentSql = True
End Sub
Public Sub Map()
Dim automapper As New ConventionModelMapper()
Mapping = automapper.CompileMappingFor(Assembly.GetExecutingAssembly().GetExportedTypes().Where(Function(x) x.[Namespace].StartsWith("xxx.Models")))
Cfg.AddMapping(Mapping)
End Sub
所有这一切工作正常,除了包含数组的实体我所有的实体。实际上,我需要使用的唯一阵列是使用字节数组的单个实体中的字节数组。我试图用BeforeMapProperty事件覆盖映射,但是无论如何抛出异常,因为我认为错误发生在该事件之前。
谢谢! 最佳, 克里斯