.NET,C#,WebAPI,使用代码优先迁移的实体框架
我正在使用存储库模式设计.NET解决方案。该存储库位于我的堆栈的底部,当前包含我的域模型。我在存储库(例如BLL)的顶层有一些层,最后在堆栈的顶部有一个API层,其中包含我的RESTful API端点。
这是当前解决方案堆栈的简化伪图:
-API -BLL-存储区
在API层中,我想ModelState
在每个控制器的端点内使用.NET的验证。问题是,这需要API层引用存储库层(对此有一定的了解)。这不是抽象的泄漏吗?
似乎可以使用数据传输对象解决方案,但这似乎很愚蠢,因为它们与存储库中的域模型基本相同。那并不需要太多的抽象。
我正在考虑添加一个单独的项目以包含域模型的想法,然后允许API,BLL和存储库全部引用该项目。有什么理由不应该这样做?
我在这里看到的唯一缺点是,现在我的解决方案中的三个项目将需要访问数据库:
任何帮助表示赞赏。
该存储库位于我的堆栈的底部,当前包含我的域模型
那是您的问题,存储库使用域实体,但不包含它们。回购是持久性的一部分,您的域模型应该是“域”层的一部分。回购接口也是域的一部分。
同样,您的域模型应该与持久性模型不同(作为一个概念),也就是说,您与EF一起使用的pocos用于处理CRUD。域对象是根据业务视图建模的,持久性pocos的设计考虑了db的使用(存储/易于查询)。
域层应该是核心,持久性和应用程序服务应该使用它,即依赖它。您可以看一下洋葱体系结构或业务组件/垂直切片(这是IMO的一种更高级的方法)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句