我们有一个使用FluentNHibernate的项目。目前,我们为我们的实体维护了大量Fluent映射。我试图将我们转移到Fluent的自动化功能,以便我们可以删除维护层。
我遇到了FluentNHibernate的automapper问题。我已经配置了automapper并创建了一些约定来在地图创建时转换属性名称,但是当我尝试执行查询时,我收到以下错误:
"message": "An error has occurred.",
"exceptionMessage": "property mapping has wrong number of columns: MyNamespace.Common.Attachment.CreatedDate type: DateTime",
"exceptionType": "NHibernate.MappingException",
我试图在没有结果的情况下提取有关此错误的更多信息。基于我发现的一些信息,我的预感是NHibernate没有正确地将System.Datetime
映射到Oracle日期类型。 (有些读数表明C#数据类型和DB列类型之间的精度问题可能会导致这些类型的问题。)但是,在使用当前的Fluent映射时,没有问题(我们没有针对日期时间处理的特定配置)。
我想知道是否有人遇到与FluentNHibernate中的Automap功能类似的问题。我正在使用的约定代码如下。
AuditEntityConvention.cs
public class AuditEntityConvention : IPropertyConvention
{
public void Apply(IPropertyInstance instance)
{
if (instance.EntityType.IsSubclassOf(typeof(AuditEntity)))
{
switch (instance.Name) {
case "CreatedDate":
instance.Column("CREATED_DT");
break;
case "UpdatedDate":
instance.Column("UPDATED_DT");
break;
}
}
}
}
或者,有没有办法调试automapper并查看它生成的映射?如果我能做到这一点,也许我可以继续前进。