我有一个三层架构的程序。问题如下:
1. 数据访问层是EF层吗?
2. 如果我想从表示层使用由EF生成的实体,那么我需要引用数据访问层,但这违反了三层架构的原则。
我有一个三层架构的程序。问题如下:
1. 数据访问层是EF层吗?
2. 如果我想从表示层使用由EF生成的实体,那么我需要引用数据访问层,但这违反了三层架构的原则。
微软西班牙在codeplex上发布了关于N层应用程序的很好的文档、指南和示例应用程序,您可以在这里查看:
http://microsoftnlayerapp.codeplex.com/
您将在那里找到许多方向和有用的实现模式。
希望对您有所帮助。
EF有两个作用:
1)为您生成一个领域模型(可选,但通常使用) 2)通过该领域模型使您能够查询/修改数据库。
这可能会让领域模型和数据访问之间的界限变得模糊,但这两者确实是分开的。
只要您不在表示层中创建对象上下文并直接编写查询,那么在我看来,您就没有打破抽象化——您唯一“打破”的是您需要在表示项目中引用System.Data.Objects(或EF dll),除非您按照Jethro建议的方法将您的领域模型生成到单独的项目中。