2012-03-28 27 views
5

我有一个POCO实体,我在其上定义了一个自定义构造函数。我还实现了默认的构造函数,以便Entity Framework可以在我从数据库请求一个副本时成功提供对象水合物。防止延迟加载的POCO实体上的私有构造函数

这似乎工作正常,但是当我将默认构造函数设置为private(强制我的代码使用自定义版本)并从数据库请求实体时,我似乎无法浏览相关实体因为它们全都是空的。

这似乎是一个懒加载问题,所以我可以更改我的存储库,以加载我需要的相关对象,但我想知道是否有更好的方法来隐藏客户端代码的默认构造函数,同时允许实体框架懒惰加载?

回答

9

如果您定义私有构造violate requirements创建POCO代理负责延迟加载:

自定义数据类中必须有 没有参数的公共或受保护的构造。

所以最好的选择是使用受保护的构造函数或不使用延迟加载。

+0

受保护的构造函数很好,谢谢。 – James 2012-03-28 13:43:08