在EntityFramework中将POCO对象转换为Proxy对象

AFr*_*eze 4 proxy entity-framework poco asp.net-mvc-3

我有一个MVC3项目,我遇到了一个问题.我有一个Create控制器,它将我的POCO对象作为参数.我将此对象添加到数据库中,如下所示:

  entity = dbSet.Add(entity);
Run Code Online (Sandbox Code Playgroud)

这个方法返回后,我想使用对象的延迟加载功能.不幸的是,该对象不是EntityFramework生成的Proxy对象...有没有办法以某种方式解决这个问题?

谢谢,AFrieze

Lad*_*nka 5

将实体传递给Add方法时,实体必须已经代理.Add方法不会返回该类的另一个实例,并且您无法将现有实例的类型更改为代理类型.

你的选择是:

  • 不使用实体作为控制器中的输入 - 使用一些视图模型并填充由dbSet.Create- 创建的新实体- 这将创建空代理分离实体.
  • 不是添加在控制器中接收的实体,而是创建新的实体dbSet.Create并将数据从接收的数据复制到创建的实体
  • 不要使用默认模型绑定器.创建自定义模型绑定器(即负责从HTTP请求中提取数据并填充传递给控制器​​的参数的代码),它将使用dbSet.Create而不是默认实体构造函数.