我正在轉換使用正常的NHibernate hbm.xml映射到流利NHibernate以前的項目。目前,我被困在應該是實現這個工作的最後步驟之一。我已經爲DefaultAutomappingConfiguration添加了派生類來修改我的ID命名約定。字符串「Id」附加到類名稱上:流利NHibernate的錯誤:實體的'ClassMap`1'沒有一個Id映射
public override bool IsId(FluentNHibernate.Member member)
{
return member.Name == member.DeclaringType.Name + "Id";
}
這應該使「Agency」在名爲「AgencyId」的字段中有一個ID。相反,我得到這個錯誤:
The entity 'ClassMap`1' doesn't have an Id mapped. Use the Id method to map your identity property. For example: Id(x => x.Id).
{Name = "ClassMap`1" FullName = "FluentNHibernate.Mapping.ClassMap`1[[BackendDb.Model.Agency, BackendDb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"}
我做的ISID功能斷點,看看發生了什麼事情:
{Property: Cache}
{Name = "ClassMap`1" FullName = "FluentNHibernate.Mapping.ClassMap`1[[BackendDb.Model.Agency, BackendDb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]"}
這是什麼?該對象不是我創建的。其他每個對象都可以很好地通過這個函數,而我實際想要映射的那些對象會返回正確的值。
我的會話工廠看起來是這樣的:
var cfg = new MapConfig();
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008
.ConnectionString(m => m.Server(@".\SqlExpress")
.Database("{some dbname}")
.TrustedConnection()))
.Mappings(m =>
m.AutoMappings
.Add(AutoMap.AssemblyOf<Agency>(cfg))
)
.BuildSessionFactory();
煩人,似乎這在某種程度上造成了三個表我是在我的開發數據庫測試功能NHibernate是清空。我勒個去?
是你的'Agency'類實現或擴展ClassMap嗎?除非您使用映射文件,否則您不應該引用它。 –
是:public class代理地圖:ClassMap –
Chris