【发布时间】:2020-07-23 03:03:15
【问题描述】:
我刚刚阅读(修订)了一些架构原则(如此处记录的 https://docs.microsoft.com/en-us/dotnet/architecture/modern-web-apps-azure/architectural-principles)并且对 persistence ignorance 原则有这样的违规示例感到有点困惑:
Properties requiring virtual keyword
所以我不清楚为什么这样的要求会违反持久性无知原则。假设我们的模型类只是 C#,由 .NET 编译器编译。要加载模型实例,只需正常创建类实例(所有属性都从相应的持久数据初始化,例如:数据记录)。要保存它,只需从模型实例中读取值并将其放回持久存储(任何类型的)。
实际上Entity Framework 确实需要启用一些很酷的功能,例如延迟加载……而且我确实看到 EF 在支持各种持久性存储(数据库)方面做得很好,据我了解应该与所谓的a violation of the persistence ignorance principle相反。
你能给我一些真实的例子来证明requiring virtual properties 可能违反持久性无知原则吗?如果有的话,那是不是有时我们不能只遵守所有的原则,我们可能不得不在遵循好的原则和拥有好的特性之间进行权衡(就像 EF 一样?
【问题讨论】:
标签: c# architecture principles