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

时间:2011-11-17 20:58:13

标签: asp.net-mvc-3 entity-framework proxy poco

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

  entity = dbSet.Add(entity);

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

谢谢你, AFrieze

1 个答案:

答案 0 :(得分:5)

将实体传递给Add方法时,实体必须已经过代理。 Add方法不会返回该类的另一个实例,也不能将现有实例的类型更改为代理类型。

您的选择是:

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