通常,我使用包含以下内容的解决方案开始了新项目:
Web项目:包含ASP.NET MVC或Web API控制器,Javascript代码等。对类库进行调用
类库1 :包含DbContext
,EF数据模型,具有CRUD方法以通过DbContext
与Db进行接口的类以及各种“实用程序”方法< / p>
类库2 :仅包含POCO类。 Web项目和library1都引用了该库。
好的,这很好,但是当“业务逻辑”的数量开始增加时,这有点混乱,因为我开始输入业务为您提供的更多规则。让我认为需要在另一个“层”或库中放置“业务逻辑”,该逻辑实际上超出/超出了仅仅作为POCO对象的过滤列表返回的数据。诸如根据业务中某个组定义的某些规则检查订单属性之类的事情。
然后我的问题是:即使在仅需要某种形式的简单查找值列表的简单情况下,您是否也会迫使来自客户端层的每个调用都经过业务库(请参见案例2下的图像)?
答案 0 :(得分:1)
这个问题很可能会引起有根据的答案。我的看法是-是的,我会强迫所有内容都通过业务库。
要真正具有一致性,可以确保:
现在-这并不是说它不会变得复杂,而是会变得复杂。但是,还有其他一些方法可以拆分事物,您不一定需要有一个巨大的DBContext
类来处理N个不同的查询,具体取决于我们的设计,我们最终可能会使用部分类将其拆分因此,不同的功能最终会存储在不同的文件中,它们的测试也将映射到不同的文件;我们认为这可以改善整体可维护性。