我必须使用Entity Framework 4.1和ASP.NET构建Web应用程序的体系结构。我已经有了数据库结构,所以我必须使用数据库的拳头。我在这里阅读了很多文章和主题,但似乎我错过了一些东西。我已决定以下列方式组织项目:使用Entity Framework 4和Repository Pattern的多层体系结构
我已经用Linq2Sql构建了一个Web应用程序。我用this project。它提供了一个T4模板,为每个实体生成一个特定的静态资源库类。我喜欢这种方法,因为它很容易向任何存储库添加额外的逻辑,例如GetUserByName()
。我喜欢这种方法,但目前为止我还找不到EF4的类似方法。我发现只有通用的存储库,然后我必须手动创建具体的存储库。在这种情况下,我不喜欢的首先是我正在处理的应用程序有一些复杂的业务逻辑,所以我将不得不手动创建几乎每个实体的具体存储库。其次,如果起初我使用通用资源库来获取所有实体,并且以后需要使用例如GetUserByName()
,那么代码中会出现不一致。我宁愿所有的数据都是以相同的方式完成。
我要么遗失了一些建筑结构。
通用:通用信息库,如果这里有必要进行分隔
DAL:本EDMX(实体模型)与上下文类和库
BLL文件:的业务逻辑系统
- 实体
- 服务
- 等
UI:ASP.NET页面
问题:
是逻辑的分离是否正确?
我应该使用特定的存储库吗?
什么样的存储库模式的实施,你会推荐最好的项目组织和易于使用?
使用静态存储库更好吗?
由于
在windows和web开发的沉重金融系统中拥有背景我到目前为止只有很少的问题,为什么你认为你的实体应该住在BLL中至今我的经验是实体是非常基本的单元, 。 –
那时我还没有做出最后的决定。我也想用EF生成它们并将它们放入DAL中。 – Thea
@泰迪 - 这些实体应该(可以)进入一个共同的“层”/装配体,以便它们可以重新使用;这些与实体数据访问专用的EF实体不同。 –