Fluent nhibernate Fluent Nhibernate修改默认id
今天我已经建立了流畅的nhibernate。 我遇到了Ids,当我将一个类映射到另一个类时, 我必须指定类映射到的id。 因为我的id总是类名+id nhibernate的默认类名为+“”+id 因此,当我必须按如下方式创建映射时: Id(x=>x.MenuItemId,“MenuItemId”) 如何将设置覆盖为我需要的设置,因此我只能使用映射作为 Id(x=>x.MenuItemId) 只有当我参加其他课程时,问题才会出现 MenuItem和我使用的实体菜单连接 HasMany(x=>x.MenuItems).Class(typeOf(Menu)) 我们发现: 这就是解决办法 身份 automapper固执己见,它期望您的类以特定的方式设计;如果它们不是,那么它将无法在没有一点帮助的情况下自动映射它们。自动映射程序希望您的身份名为Id,如果不是,它将找不到 通过覆盖自动映射配置中的IsId方法,可以修改自动映射发现标识的方式。将为实体中已被ShouldMap(成员)条件接受的所有成员调用此方法;无论您为哪个成员返回true,都将映射为标识Fluent nhibernate Fluent Nhibernate修改默认id,fluent-nhibernate,mapping,Fluent Nhibernate,Mapping,今天我已经建立了流畅的nhibernate。 我遇到了Ids,当我将一个类映射到另一个类时, 我必须指定类映射到的id。 因为我的id总是类名+id nhibernate的默认类名为+“”+id 因此,当我必须按如下方式创建映射时: Id(x=>x.MenuItemId,“MenuItemId”) 如何将设置覆盖为我需要的设置,因此我只能使用映射作为 Id(x=>x.MenuItemId) 只有当我参加其他课程时,问题才会出现 MenuItem和我使用的实体菜单连接 HasMany(x=>x.M
public override bool IsId(Member member)
{
return member.Name == member.DeclaringType.Name + "Id";
}
该示例将匹配以其实体命名的任何ID,例如CustomerId
并称之为:
return Fluently.Configure()
.MsSql2008
.ConnectionString(c => c.FromConnectionStringWithKey("database"))
.ShowSql()
.ProxyFactoryFactory("NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu"))
.Mappings(x => x.FluentMappings
.AddFromAssembly(
Assembly.GetExecutingAssembly())
.Conventions.AddFromAssemblyOf<Location.IdConvention>())
.BuildSessionFactory();
public class IdConvention : IIdConvention
{
public void Apply(IIdentityInstance identityInstance)
{
identityInstance.Column(identityInstance.EntityType.Name + "Id");
}
}