我正在使用 EF 5,并且启用了延迟加载。当我从数据库中检索实体时,它工作得很好。
这是我的问题。我有一个通用存储库来执行数据库操作。
public int Update(T t) //Update method implemented at repository layer
{
dbSet.Attach(t);
context.Entry(t).State = EntityState.Modified;
return context.SaveChanges();
}
public T Update(T t, int id) //This Method calls the above method to
{
if (Update(t) > 0)
{
//Now entity is updated so retrieve the entity from the database.
return Get(id); //This line of code doesn't return entity with reference. It does return the updated entity.
}
return null;
}
现在,当我使用主键查询实体以获取更新的实体时,它给了我更新的实体,但是没有任何引用属性。我不能在这里使用延迟加载,因为它会引发异常。
更新实体后,我注意到 dbSet.Local 具有更新的实体。所以我在检索更新的实体之前尝试清除,但没有运气。我也尝试通过上下文重新加载实体,但它不会重新加载导航属性。我不能像使用通用存储库一样使用引用属性。我能完成的唯一方法是处理和创建上下文和数据库集的新实例。
我想返回填充了关系属性的更新实体。有没有人有好的解决方案。