我正在使用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;
}
现在,当我查询实体使用主键来获得更新的实体,它给了我更新的实体,但是没有任何参考性。我不能在这里使用懒加载,因为它会引发异常。
更新enttity后,我注意到dbSet.Local有更新的实体。所以我试图清除之前我检索更新的实体,但没有运气。我也尝试通过上下文重新加载实体,但不重新加载导航属性。我无法使用引用属性作为我使用的通用存储库。 我可以完成的唯一方法是处理并创建上下文和dbset的新实例。
我想返回填充了关系属性的更新实体。有没有人有一个好的解决方案。
有什么异常? – 2013-01-06 23:34:14
它不会抛出异常。所有关联的属性都是空的。 –
你说,因为它抛出一个异常,你不能使用延迟加载。 – 2013-01-14 02:42:50