0

最近我在我的应用程序中关闭了 LazyLoading,因为我希望它能让我更加了解我正在发送的 sql 查询的数量。问题是,当我在尝试访问实体之前忘记在某个地方加载实体时,它只会返回 null(而不是异常)。这意味着我的逻辑错误地假设该值为空,从而导致流程后期出现各种问题。

我知道有 IsLoaded 标志,但首先您必须添加样板代码,其次您仍然可以忘记检查。

是否可以让实体框架在访问未加载的导航属性时自动抛出异常?对我来说这似乎是正确的方法,你为什么要忽略你的实体没有加载的事实,只是让程序继续?

还是我想错了方向?:|

(顺便说一句,EntityCollections 更糟糕,因为它们只是返回一个空列表,就像没有错一样)

4

1 回答 1

0

不,没有任何自动方法可以做到这一点。从理论上讲,您可以创建自定义 T4 模板来生成您的实体并签IsLoaded入每个属性获取器。如果您想使用 POCO 方法,这对您没有帮助,因为这样的检查会破坏 POCO 规则并使您的实体依赖于 EF。如果您使用EntityObject基于实体,您可以尝试这种方法。

于 2012-04-14T13:08:52.720 回答