簡體   English   中英

以n:n關系更新外鍵-實體框架代碼優先遷移

[英]Update foreign keys in an n:n relationship - Entity Framework Code First Migrations

我正在使用Entity Framework代碼優先遷移。 ProfileLanguages之間存在n:n關系(一個Profile可以具有Languages )。 我想知道如果我具有語言ID(外鍵),如何更新配置文件的語言列表。 對於1:1的關系(即,如果Profile僅可以使用一種語言),我可以只更新LanguageID,但是對於n:n,我沒有可供更新的LanguageID列表,因此這意味着我必須多花一點時間數據庫以檢索語言並初始化配置文件對象的Language屬性。 有什么辦法可以解決這個問題?

自從您將遷移命名為“遷移”之后,我假設您想進行某種播種? 我將從這個答案開始,所以我們要討論一些代碼:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM