我有以下课程;
public class Country
{
public virtual int CountryId { get; set; }
public virtual string Code { get; set; }
public virtual string Name { get; set; }
public virtual bool Preferred { get; set; }
public virtual DateTime LastChanged { get; set; }
}
我已经使用Fluent NHibernate的自动映射功能将表与对象相关联。
public static class SessionFactoryBuilder
{
public static ISessionFactory BuildSessionFactory()
{
return Fluently.Configure()
.Database(MySQLConfiguration.Standard.ConnectionString(""))
.Mappings(m => m.AutoMappings.Add(CreateMappings()))
.BuildSessionFactory();
}
// Returns our mappings
private static AutoPersistenceModel CreateMappings()
{
return AutoMap
.Assembly(System.Reflection.Assembly.GetCallingAssembly())
.Where(t => t.Namespace == "Escape.Data.Entities");
}
}
我如何覆盖从Id到在类中定义的CountryId的表的身份ID。
我们应该在这里使用约定。要更改默认的主键名称,我们可以使用
PrimaryKey.Name.Is(x => x.EntityType.Name + "Id")
列名称约定可能是这样的,让我们实现IIdConvention
:
public class MyIdColumnNameConvention : IIdConvention
{
public void Apply(IIdentityInstance instance)
{
instance.Column(instance.EntityType.Name + "Id");
}
}
并将其添加到配置
return AutoMap
.AssemblyOf<Country>(t => t.Namespace == "Escape.Data.Entities")
// use the convention
.Conventions.Add(PrimaryKey.Name.Is(x => x.EntityType.Name + "Id"))
.Conventions.AddFromAssemblyOf<MyIdColumnNameConvention >()
在这里查看更多:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句