我正在使用實體框架代碼第一次遷移。 Profile
和Languages
(A Profile
可以有許多Languages
)之間有n:n關係。我想知道如果我有語言ID(外鍵),我可以如何更新配置文件的語言列表。對於1:1的關係(即,如果配置文件只能有1種語言),我可以更新LanguageID,但對於n:n,我沒有要更新的LanguageID列表,因此這意味着我必須再次訪問數據庫來檢索語言並初始化配置文件對象的Language屬性。有什麼辦法可以解決這個問題嗎?更新n:n關係中的外鍵 - 實體框架代碼第一次遷移
0
A
回答
1
既然你命名這個遷移,我會假設你想做某種種子?我將從這個答案開始,所以我們有一些代碼來討論:
protected override void Seed(ApplicationContext context)
{
var languageIds = new List<int> {1,2,3,4}; // FK to language. Are you assigning same list to all profiles?
var profiles = context.Profiles.Include(p => p.Languages).ToList();
foreach (var profile in profiles)
{
// Since you mention updating, you may need to remove old languages
if (profiles.Languages.Any())
{ delete children... }
// add new languages. You could add a test so you only seed when no languages are present
foreach (var languageId in LanguageIds)
{
profile.Add(new Language {LanguageId = languageId};
}
}
context.SaveChanges();
}
+0
謝謝!我不知道你可以用一個語言ID和實體框架知道要更新的語言來設置語言。 – Eitan
相關問題
- 1. 實體框架代碼與接口的第一次遷移
- 2. 實體框架代碼第一次遷移問題 - Dataloss
- 3. 實體框架代碼第一次遷移
- 4. 實體框架代碼第一次遷移和火鳥
- 5. 實體框架代碼第一次更新不會更新外鍵
- 6. 枚舉可用的實體框架代碼第一次遷移
- 7. 實體框架代碼第一次遷移投擲錯誤
- 8. 實體框架代碼第一關係
- 9. 實體框架6從代碼第一次遷移得到sql
- 10. 實體框架代碼第一次內連接沒有主外鍵關係
- 11. 實體框架代碼第一次遷移 - 啓用遷移失敗
- 12. 在實體框架代碼第一次遷移中刪除移動的屬性
- 13. 代碼第一次實體框架虛擬和外鍵困惑
- 14. 實體框架,代碼第一次和外鍵多對多
- 15. 實體框架代碼第一次多列外鍵
- 16. 實體框架 - 刪除N:N關係
- 17. 實體框架代碼第一次雙倍多對多關係
- 18. 實體框架5代碼遷移
- 19. 實體框架代碼在數據庫遷移後第一次回滾
- 20. 實體框架中的外鍵關係
- 21. 實體框架中的外鍵關係
- 22. 如何刪除唯一索引與實體框架代碼第一次遷移
- 23. 如何更新實體框架4中的外鍵關係?
- 24. 實體框架代碼從單獨的窗口類庫第一次遷移
- 25. 實體框架代碼第一次遷移 - 不好還是不錯
- 26. 實體框架代碼第一次遷移生產(WPF應用程序)
- 27. 實體框架代碼第一個遷移類文件
- 28. 實體框架代碼第一次遷移和設置<T>方法
- 29. 實體框架代碼第一次更新與Gridview
- 30. 實體框架代碼第一次更新
「我沒有一個LanguageID列表」,爲什麼不呢?什麼阻止你在'Profile'上有虛擬列表語言?然後,您可以清除該列表並添加語言和EF應該整理,如果你有上下文中的一切。 –
雖然我在更新實體時沒有語言。我有一個語言ID列表(整數)。我可以去數據庫並獲取語言,並使用該列表初始化配置文件對象中的語言屬性,就像您提到的一樣,但對數據庫來說似乎是不必要的。 – Eitan
您可以僅使用ID進行更新。 https://msdn.microsoft.com/library/ee794150(v=vs.100).aspx –