0
我有一个并发错误处理程序,它执行从客户端到数据库的当前显式字段更新,然后从数据库重新加载记录以刷新对客户端的所有其他更改。EF6无法通过dbContext刷新导航或集合属性
这适用于我刷新我的主体实体 - 公司,但我不能影响相关集合属性的更新。
我正在使用更改跟踪,所以上下文总是从这些副本中提取。
有没有办法导致集合属性从数据库刷新?所有我能找到的Load方法和排列都不会更新已经加载的副本。
以下示例缩小到1个集合属性。 这里,当refreshFromStore为true时,公司实体将从当前数据库值中刷新。注释掉的PhoneNumbers属性Load无用,并且不会从当前数据库值更新。
这怎么办?
感谢
public Company GetCompany(int CompanyId, bool refreshFromStore)
{
Company company = context.Companies
.Include("PhoneNumbers")
.Where(c => c.Id == CompanyId).FirstOrDefault();
if (refreshFromStore)
{
context.Entry(company).Reload();
//context.Entry(company).Collection<PhoneNumber>("PhoneNumbers").Load(); No good - doesn't write to tracked instances
}
return company;
}
我这样做已经,穆赫辛。 – Gerry 2014-10-06 08:14:15
这两个扩展的核心线:context.Entry(entity).Reload();这会重新加载主要实体。 context.Entry(entity).Collection(navigationProperty).Query();这对现有数据没有影响 - 即不从数据库 –
Gerry
2014-10-06 08:15:40
尝试AsNoTracking()方法刷新它。 – 2014-10-06 08:31:57