EntityFramework使用新外键更新现有记录

时间:2016-12-19 15:16:45

标签: c# entity-framework

我有一个数据库和一组已有数据的表。 我先使用代码。现在我被要求将 Category 表添加到数据库中,并使用它来更改其他一些表以通过外键引用该表。 我知道通过以前的经验,如果我在更改模型后更新数据库,它会呻吟,因为FK不能有0。 因此,我希望在数据库更新时使用 Seed 方法实际更新外键。

我想做这样的事情:

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

有人能让我知道我是怎么做到的吗?或者,如果有另一种方式吗?

1 个答案:

答案 0 :(得分:1)

在循环中:

<add name="SoccerEntities" 
     connectionString="metadata=res://*/Models.MyModel.csdl
                               |res://*/Models.MyModel.ssdl
                               |res://*/Models.MyModel.msl;
                       provider=System.Data.SqlClient;
                       provider connection string='server=tcp:<servername>,1433;
                                                   initial catalog=MyDB;
                                                   persist security info=True;
                                                   user id=user;
                                                   password=pwd;
                                                   MultipleActiveResultSets=True;
                                                   App=EntityFramework'" 
                        providerName="System.Data.EntityClient" />    

或使用Entity Framework Extended library一批完成:

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