0

我有一个大问题。我正在使用 Entity Framework 5 和 UnitOfWork 模式(使用存储库)。我有一个实体对象 Person (从 Entity 继承并具有一些属性:名称、姓氏、IdAddress (以及与 idAddress 链接的虚拟实体地址)。

当我使用以下代码时:

Person p = personRepository.FindById(5);

我正确地获得了实体,外国是好的,并且还加载了声明为虚拟的实体。

但是,当我使用以下代码时:

Person p = new Person();
p.IdAddress = 1;
personRepository.Add(p);
unitOfWork.commit();

实体 p 对于 Address 实体具有空值。提交后如何“强制”刷新内存中的实体?非常感谢你的帮助

4

2 回答 2

3

使用以下Refresh方法ObjectContext

context.Refresh(RefreshMode.StoreWins, p);

或者,如果您使用的是DbContext

context.Entry<Person>(p).Reload();
于 2013-11-02T18:27:23.393 回答
0

对我有用的是在页面加载之前重新实例化存储库。您的代码会有所不同,但是无论您personRepository从实体框架上下文在对象中生成数据,您都需要在每次将模型发送到视图之前执行此操作。

    public ActionResult Form(int id)
    {
        _repository = new EntityFrameworkRepository<Model>(new EntityContext(), "Id");
        return View(_repository.Where(c => c.Id == id).FirstOrDefault() == null ? new Model() : _repository.Where(c => c.Id == id).FirstOrDefault());
    }
于 2015-12-02T16:50:27.213 回答