發現此問題: 即解決方案。
標識
的automapper被堅持己見,它期望被設計爲以特定的方式你的類;如果它們不是,那麼它將無法在沒有一點幫助的情況下自動映射它們。 automapper期望你的身份被命名爲Id,如果他們不是,它不會找到它們。
您可以通過在自動映射配置中重寫IsId方法來修改自動映射器發現標識的方式。這個方法將會被你的實體中已經被ShouldMap(成員)標準接受的所有成員調用;無論哪個成員您返回true都會被映射爲身份。
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();
並且設置了ID CONVENCION後
public class IdConvention : IIdConvention
{
public void Apply(IIdentityInstance identityInstance)
{
identityInstance.Column(identityInstance.EntityType.Name + "Id");
}
}