1

我相信这是我要问的一个明确的是/否的问题,无论实施如何,它要么违法,要么不违法。所以我的问题是,在实体框架模型中创建的导航属性是否违反了得墨忒耳定律?我认为他们这样做是因为一个实体可能拥有太多的知识和对其导航属性实例的访问权限,如下所示:

Orders.Products.Price

在上面的代码Orders中,主实体中包含一个导航属性Products。通常,我们必须深入了解该导航属性以访问该相关对象的详细信息。我假设拥有实例属性通常也不会违反法律吗?

帮助解决这个问题会很有帮助,谢谢!

4

1 回答 1

1

是的,他们这样做,但没关系。严格遵循得墨忒耳定律几乎是不可能的——你必须做出妥协以保持高设计质量、高代码质量、可维护性和可读性。EF 提出了附加要求,这些要求主要与 EF 如何在对象和数据库记录之间进行映射有关。某些类型的映射 (EDMX) 允许您更改实体属性的可见性,以便您可以在内部或受保护的属性之上构建自己的抽象层,但您可能会丢失一些 EF 功能。

如果您对得墨忒耳定律和 ORM 工具感兴趣,您还应该查看域驱动设计和聚合根。

于 2012-07-09T19:46:49.733 回答