C# 使用部分类的实体框架DDD-持久性忽略-可测试性

C# 使用部分类的实体框架DDD-持久性忽略-可测试性,c#,asp.net-mvc,entity-framework,architecture,domain-driven-design,C#,Asp.net Mvc,Entity Framework,Architecture,Domain Driven Design,我想在我的应用程序中使用实体框架和自动生成的类 我对以下方面不感兴趣: 顽固无知 测试 我只关心一件事: 保持应用程序井然有序 保持简单 我读过关于域驱动器设计的书,我对它很感兴趣,因为它声称可以简化复杂的应用程序。但当我从实际应用程序示例中阅读代码时,我对这种方法的复杂性感到震惊 我的想法是使用分部类来扩展EF生成的类。 有人尝试过这种方法,可以给我一些建议吗?我认为你在使用一种技术,却不了解它的好坏。根据我的经验,这几乎总是导致糟糕的应用程序设计 如果有人说他们对测试不感兴趣,那就是

我想在我的应用程序中使用实体框架和自动生成的类

我对以下方面不感兴趣:

  • 顽固无知
  • 测试
我只关心一件事:

  • 保持应用程序井然有序
  • 保持简单
我读过关于域驱动器设计的书,我对它很感兴趣,因为它声称可以简化复杂的应用程序。但当我从实际应用程序示例中阅读代码时,我对这种方法的复杂性感到震惊

我的想法是使用分部类来扩展EF生成的类。
有人尝试过这种方法,可以给我一些建议吗?

我认为你在使用一种技术,却不了解它的好坏。根据我的经验,这几乎总是导致糟糕的应用程序设计

如果有人说他们对测试不感兴趣,那就是在以后的路上梦游到了一堆问题中

DDD的“简单性”是以所有简单性、抽象层为代价的。阅读Eric Evans Domain Driven Design,您可能会意识到为什么它会带来更好的设计


我个人认为你会在这个等式中失败。你是一个专业,你应该考虑术语“不考虑测试”的含义。如果您将应用程序发送给客户后应用程序出现故障,会发生什么情况?老板会责怪谁?他们自己?要非常小心

我认为你在使用一项技术时,并不了解它的好坏。根据我的经验,这几乎总是导致糟糕的应用程序设计

如果有人说他们对测试不感兴趣,那就是在以后的路上梦游到了一堆问题中

DDD的“简单性”是以所有简单性、抽象层为代价的。阅读Eric Evans Domain Driven Design,您可能会意识到为什么它会带来更好的设计


我个人认为你会在这个等式中失败。你是一个专业,你应该考虑术语“不考虑测试”的含义。如果您将应用程序发送给客户后应用程序出现故障,会发生什么情况?老板会责怪谁?他们自己?要非常小心

所以,如果我理解正确,您希望使用数据访问工具,特别是实体框架来帮助实现您的应用程序

听起来你实际上对这个项目的领域驱动设计不感兴趣

我认为这是一个很好的位置。DDD整合了DDD之外有用的思想、模式和工具

然而,和其他人一样,我会提醒大家不要走到DDD道路的一半。领域模型的概念尤其如此。一旦您开始尝试实现一个真正的域模型,实际上您将需要DDD的其余部分,以使其适合您。您将发现,如果没有DDD难题的所有部分,您的应用程序将走向贫血域反模式

然而,如果你知道你不是在做DDD,只是从中提取一些想法,你就可以正确地推动“贫血领域模型”,这将是一件好事

如果我没有因为说那句话而被否决,我会感到惊讶,但让我解释一下

您可以采用ORM(EF),采用存储库的概念(尽管我更喜欢将其称为DAO—数据访问对象—以避免两者之间的混淆),并使用标准的分层/洋葱架构实现您的应用程序。应用程序逻辑的大部分将进入使用直接反映数据库的数据类以事务脚本样式实现的服务中

这是一种经过时间测试的构建应用程序的方法。这不是DDD。这两种方法更适合不同类型的应用,有不同的优点和缺点,等等


使用EF或类似的工具应该使实现应用程序的大部分变得简单和快速。只是不要在没有真正进行DDD的情况下陷入尝试DDD的困境。

因此,如果我理解正确,您希望使用数据访问工具,特别是实体框架来帮助实现您的应用程序

听起来你实际上对这个项目的领域驱动设计不感兴趣

我认为这是一个很好的位置。DDD整合了DDD之外有用的思想、模式和工具

然而,和其他人一样,我会提醒大家不要走到DDD道路的一半。领域模型的概念尤其如此。一旦您开始尝试实现一个真正的域模型,实际上您将需要DDD的其余部分,以使其适合您。您将发现,如果没有DDD难题的所有部分,您的应用程序将走向贫血域反模式

然而,如果你知道你不是在做DDD,只是从中提取一些想法,你就可以正确地推动“贫血领域模型”,这将是一件好事

如果我没有因为说那句话而被否决,我会感到惊讶,但让我解释一下

您可以采用ORM(EF),采用存储库的概念(尽管我更喜欢将其称为DAO—数据访问对象—以避免两者之间的混淆),并使用标准的分层/洋葱架构实现您的应用程序。应用程序逻辑的大部分将进入使用直接反映数据库的数据类以事务脚本样式实现的服务中

这是一种经过时间测试的构建应用程序的方法。这不是DDD。这两种方法更适合不同类型的应用,有不同的优点和缺点,等等


使用EF或类似的工具应该使实现应用程序的大部分变得简单和快速。只是不要在你没有真正做DDD的时候陷入尝试DDD的泥潭。

让我直说吧——你对DDD感兴趣,但是