我想分开我的ASP。 NET MVC 5 + WebApi2解决方案分成独立的逻辑项目,所以(在我脑海中)我有:
但我不能让我的真实项目看起来像那样,因为
这是一个由ASP .NET模板自动生成的全新项目。感谢。
答案 0 :(得分:0)
通常,您不会通过在Web项目中引用数据模型来避免将Entity-Framework污染到Web代码中。 例如,如果将模型的接口放在单独的基础结构项目中,则不会再出现此问题。您的“服务”可以返回抽象类型而不依赖于EF,并且耦合会减少。
就我个人而言,我喜欢通过一个负责工厂代码的单独项目或(甚至更好的IMO)来解决这个问题,让每个项目都有责任构建自己的对象。将工厂代码放在同一个地方可以进一步减少耦合,并且可以使重构更容易。
还有一件事......
如果这是一个新项目,为什么你甚至需要一个DI容器。当你更好地了解自己的需求时,你总是可以使用穷人的依赖注入和重构。它们经常被过度使用或用作拐杖来隐藏过于复杂的lasagna code。它是一种非常有用和强大的技术,但通过精心设计的工厂和建造者也可以实现灵活性的大部分好处。这些可以提高可读性的额外好处。