【发布时间】:2019-07-17 19:27:37
【问题描述】:
是否可以通过实体框架检测是否正在从数据库中填充实体?
在某些属性的 Setter 中,如果属性是由 UI 设置的,我有需要运行的逻辑,但如果它是由从数据库加载的 EF 设置的,则不需要运行。
这有几个原因。
我正在设置器中进行一些强制验证,这些设置器依赖于在 EF 填充属性时可能尚未初始化的其他属性。
我希望保留从数据库加载的值,否则这些值会被逻辑强制设置。
编辑: 回到 EF 之前的过去,我们有自己的框架。所有实体都有一个属性“Loaded”,框架在完成初始化实体后将其设置为 true。这就是我希望在 EF 中做的事情。
【问题讨论】:
-
不能用这些实体的id属性吗?
-
这正是您不应该在 setter 中进行验证的原因。从数据库读取时进行验证是不好的做法(您应该始终能够将数据库内容视为有效)并且可能是性能杀手。您必须在保存实体之前将其作为一个整体进行验证,例如通过使其实现
IValidatableObject。换句话说,你不应该需要你所要求的。
标签: c# entity-framework-6