0
A
回答
0
最好的方法是,你需要添加一個主鍵。
爲什麼EF需要您添加PK? 因爲,PK是表中唯一標識行的方法,如果不存在PK,表中可能有許多相同的行(如果有PK,則不同,PK是唯一的,每行都會不同),所以如果你想刪除或更新,哪一行是你的目標?如果不存在PK,EF無法知道如何識別該行,所以您必須在表中包含PK。
如果您不能添加一個(可能是來自客戶的數據庫,您沒有權限),則可以更改EF和DB之間的映射XML文件,爲唯一表添加相關PK元素柱。
0
我不確定此解決方案是否適用於ef數據庫,但您可以測試。雖然實體沒有主鍵 ,但您可以使用其他字段進行比較。只需重寫GetHashCode方法即可。這裏有一個例子:
public class Organisation
{
public string Name { get; set; }
public string Country { get; set; }
public override int GetHashCode()
{
unchecked
{
int multiplier = 31;
int hash = GetType().GetHashCode();
hash = hash * multiplier + (Name == null ? 0 : Name.GetHashCode());
hash = hash * multiplier + (Country == null ? 0 : Country.GetHashCode());
return hash;
}
}
}
這是一篇博客文章Entity Framework with overriding methods GetHashCode and Equals
相關問題
- 1. EF 4.2代碼首先,使用現有的數據庫?
- 2. 首先使用現有MySql數據庫的EF代碼
- 3. EF 6.1.2數據庫首先查看代
- 4. MVC EF數據庫首先多對多
- 5. 更新表字段使用EF數據庫首先usind EDMX
- 6. 沒有主鍵的數據庫表
- 7. 沒有主鍵的數據庫表
- 8. 從數據庫中刪除主鍵
- 9. 刪除數據表中的主鍵
- 10. 在EF 4.1中首先使用DbContext和數據庫
- 11. 在EF代碼中設置外鍵首先到現有的SQL Server數據庫
- 12. 刪除沒有表的數據庫
- 13. 沒有錯誤,但沒有從Sqlite數據庫刪除數據使用刪除
- 14. ASP.NET MVC3 - 首先使用EF數據庫的數據註解(ObjectConext,DbContext)
- 15. EF 5數據庫首先使用自定義驗證
- 16. 爲什麼EF數據庫首先不使用getdate()?
- 17. 無法使用EF-Code首先重新創建數據庫
- 18. 如何首先使用EF代碼重置數據庫遷移?
- 19. 沒有刪除數據庫表
- 20. EF 5 - 模型首先,如何更新DB模式,而不刪除數據庫
- 21. EF模型首先:如何以編程方式生成/刪除數據庫?
- 22. EF數據庫首先拒絕映射表
- 23. EF代碼優先 - 刪除後創建數據庫然後創建數據庫
- 24. 部署的ASP.NET Web API與EF數據庫,首先應用
- 25. MVC首先使用關係數據庫
- 26. 爲什麼實體框架數據庫首先覆蓋刪除沒有行動
- 27. 數據庫首先 - DefaulValue爲
- 28. NHibernate數據庫 - 首先
- 29. EF v4映射關係沒有主鍵 - DB首先
- 30. 在沒有主鍵的MySQL數據庫中編輯數據