我刚刚阅读(修订)一些架构原则(如此处所述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 ?