NHibernate composite-id class must override Equals() 解決辦法
阿新 • • 發佈:2019-02-05
概述:
當使用NHibernate查詢表中的資料時,如果表中存在複合主鍵,如果沒有在相應的實體類中重寫Equals(),那麼將會出現"Could not compile the mapping document:
TestCleanSnow.JkptGlxtUser.hbm.xml".當跟蹤出錯的內部資訊的時候會發現,內部異常為"composite-id class must override Equals(): TestCleanSnow.JkptGlxtUserId"
解決辦法:
在JkptGlxtUserId.cs這個實體類中重寫Equals()方法如下:
再次執行呼叫語句,發現還出現"Could not compile the mapping document: TestCleanSnow.JkptGlxtUser.hbm.xml".這個錯誤,但是跟蹤內部異常為:InnerException = {"composite-id class must override GetHashCode(): TestCleanSnow.JkptGlxtUserId"}
到此很明顯,在遇到複合主鍵的情況下,應該還得在JkptGlxtUserId.cs中重寫GetHashCode(),程式碼如下:
再次執行呼叫程式,OK了.
當使用NHibernate查詢表中的資料時,如果表中存在複合主鍵,如果沒有在相應的實體類中重寫Equals(),那麼將會出現"Could not compile the mapping document:
TestCleanSnow.JkptGlxtUser.hbm.xml".當跟蹤出錯的內部資訊的時候會發現,內部異常為"composite-id class must override Equals(): TestCleanSnow.JkptGlxtUserId"
解決辦法:
在JkptGlxtUserId.cs這個實體類中重寫Equals()方法如下:
-
public override bool Equals(object obj)
-
{
-
return base.Equals(obj);
-
}
再次執行呼叫語句,發現還出現"Could not compile the mapping document: TestCleanSnow.JkptGlxtUser.hbm.xml".這個錯誤,但是跟蹤內部異常為:InnerException = {"composite-id class must override GetHashCode(): TestCleanSnow.JkptGlxtUserId"}
到此很明顯,在遇到複合主鍵的情況下,應該還得在JkptGlxtUserId.cs中重寫GetHashCode(),程式碼如下:
-
public override int GetHashCode()
-
{
-
return base.GetHashCode();
-
}
再次執行呼叫程式,OK了.