在新的DbContext实例中更新EF模型

时间:2015-07-23 07:42:55

标签: c# .net entity-framework singleton entity-framework-6

使用DbContext的两个实例更新数据库中的实体框架模型的最佳方法是什么。例如,我有一个简单的User模型,该模型加载在一个DbContext中,但保存在另一个中:

User model = null;

using(SampleDbContext dbContext = new SampleDbContext())
{
    model = dbContext.User.Find(0);
}

model.UserName = "Test-User";

using(SampleDbContext dbContext = new SampleDbContext())
{
    // Here is the place i want to save the changes of the model
    // without loading it again from the database and set each property

    // ...
    dbCotnext.SaveChanges();
}

在我的情况下,我想写一些UserManager,它有Create,Update和Delete方法。我想为howle管理器创建一个DbContext实例 没有解决方案,因为我只想保存特定模型的更改。

想要从数据库中再次加载模型以进行更新,并设置源实例中的每个值,例如:

// Update user
using(SampleDbContext dbContext = new SampleDbContext())
{
    // I don't want this:
    var model = dbContect.User.Find(0);
    model.UserName = sourceModel.UserName;
    // ...
   dbCotnext.SaveChanges();
}

也许我对经理课的问题非常简单,但我找不到任何好的解决方案。

P.S。:我的经理课通常是单身课。

谢谢。

1 个答案:

答案 0 :(得分:2)

您可以在第二个DbContext中执行以下操作:

using (SampleDbContext dbContext = new SampleDbContext())
{
    dbContext.Entry(model).State = EntityState.Modified;
    dbContext.SaveChanges();
}

这会将您对实体所做的更改保存到数据库中。但是,我不记得dbContext.Entry是否在数据库中查询实体。