在新的DbContext实例中更新EF模型
本文关键字:更新 EF 模型 实例 DbContext | 更新日期: 2023-09-27 18:04:06
用两个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
,它有创建,更新和删除方法。我想为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();
}
也许我的问题很简单,但是我找不到任何好的解决办法。
注::我的manager类通常是单例类。
谢谢。
您可以在第二个DbContext中这样做:
using (SampleDbContext dbContext = new SampleDbContext())
{
dbContext.Entry(model).State = EntityState.Modified;
dbContext.SaveChanges();
}
这会将您对实体所做的更改保存到数据库中。但是,我不记得dbContext.Entry
是否为实体查询DB。