我已将Fluent NHibernate配置为映射项目中的实体。我的实体都没有公开公共属性(除了它们的Id),它们的所有数据都存储在私有字段中。
使用:
public override bool ShouldMap(Member member)
{
return member.Name == "Id" || (member.IsPrivate && member.IsField);
}
它成功找到了我的字段,但随后希望我的数据库列被称为_emailAddress。
如何将_emailAddress映射到名为EmailAddress的列?我的SessionFactory初始化看起来像:
Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c.FromConnectionStringWithKey("AppConnection")))
.Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<User>(new NHibMappingConfiguration())
.Conventions.Add(DefaultAccess.CamelCaseField(CamelCasePrefix.Underscore))))
.CurrentSessionContext("web")
.ExposeConfiguration(BuildSchema)
.BuildSessionFactory();
显然使用默认访问约定。
谢谢, 马特
答案 0 :(得分:1)
我想你在这里有几个选择 1.您可以为命名列创建自己的约定(使用INamingConvention界面。请参阅here) 2.您可以为各个类创建一个MappingOverride类,并为每个类定义列名:
mapping.Map(x => x.Name).Column("MyColumnName");