我正在尝试使用业务方法构建域模型并让 EF 4.1 为我做持久性。到目前为止,一切都很好。
问题是,所有属性都在我的域类中公开。无论如何,这至少是我从教程中学到的。这意味着,我没有强有力的证据证明类属性不会被业务方法之外的一些粗心的程序员改变。违反封装。
我尝试引入 ISomething 但 TableAttribute 仅适用于类,不适用于接口,所以我不能告诉 EF 做 DBSet。如果我将 TableAttribute 留给类,但无论如何都要让 Something 实现 ISomething,那么我不能执行 DBSet.Add(),因为 EF 不知道 ISomething。
我能想到的唯一方法是在 EF 4.1 之上使用接口为 CRUD 编写一个完整的抽象层。在引擎盖下,做Something 和ISomething 之间的类型转换。这听起来很复杂,而且 EF 的设计存在巨大的漏洞。或者我一定错过了什么。
你会如何解决这个问题?
非常感谢。