2016-12-19 5 views
1

私は既にデータベースにデータが入っているテーブルを持っています。 私は最初にコードを使用しています。今度はカテゴリテーブルをデータベースに追加し、それを使用して、他のテーブルの一部を外部キーを介してそのテーブルを参照するように変更するように求められました。 私は以前の経験から、モデルを変更した後にデータベースを更新すると、FKは0を持つことができないので盛り上がります。Seedメソッドを使用して、データベースとして外部キーを実際に更新します。更新されます。EntityFrameworkは、新しい外部キーを使用して既存のレコードを更新します

私はこのような何かをしたい:

protected override void Seed(DatabaseContext context) 
{ 

    // Create our categories 
    context.Categories.AddOrUpdate(m => m.Id, 
     new Category { Id = 1, Name = "Cameras" }, 
     new Category { Id = 2, Name = "Televisions" } 
    ); 

    // Get all our current feeds 
    var feeds = context.Feeds.ToList(); 
    context.Feeds.AddOrUpdate(m => m.Id, feeds.Select(m => m.CategoryId = 1).ToArray()); 
} 

誰かが私は実際にこれを行う方法を知っていることはできますか?または、それを行う別の方法がある場合は?ループ内

+0

context.Feeds.ForEach(F => f.CategoryId = 1)。 –

+1

@SteveGreene、 'Foreach'は' List 'のメソッドです。\t ' context.Feeds.ToList()。ForEach(f => f.CategoryId = 1); ' – octavioccl

+0

あなたはヌルFKを持つことができますあなたが実際にすべてのカテゴリIDを必要としない場合は、同様に。 Nullは、テーブルのデザインで許可した場合、FKに対して有効です。 –

答えて

1

foreach(var f in context.Feeds) 
{ 
    f.CategoryId=1; 
} 
context.SaveChanges(); 

又は1つのバッチでそれを行うにEntity Framework Extended libraryを使用して:

context.Feeds.Update(f=>new Feed{CategoryId=1}); 
関連する問題