我正在尝试将 Entity Framework 4.0 用于 asp .net 应用程序。到目前为止,这将是文件后面的旧式代码,没有单元测试,但将来我可能会使用 MVP 和单元测试,但到目前为止,这对我来说不是问题。我正在使用数据库优先方法。这是一个模型(我无法发布图像,因为我需要声誉才能发布图像)
- 表:应用程序(ApplicationID、名称、隐藏)
- 表:用户(UserID、ApplicationID、Username、IsActive)
- 表:角色(RoleID、ApplicationID、名称)
- 表:UserRole(UserRoleID、RoleID、UserID)
我一直在阅读很多关于 Entity Framework 以及如何使用它的文章,但仍然无法对某些东西有一个非常基本的想法。我在哪里为应用程序、用户、角色、用户角色等编写这样的代码?
public List<Application> GetAllUnhiddenApplications()
{
List<Application> applist = null;
using (CustomAppsPortalEntities ctx = new CustomAppsPortalEntities())
{
applist = (from app in ctx.Applications
where app.Hidden == false
orderby app.Name
select app).ToList();
}
return applist;
}
我分别在单独的项目 Project.Data 和 Project.Entities 中分离了上下文和实体。我的问题是,上面的代码是属于 BLL(类名 ApplicationBLL)还是 DLL(ApplicationDLL)?从过去的两天开始,我一直在搜索很多 SO 问题、博客、教程,不同的人有不同的方法。这是我的困境。
如果我将代码放在数据层,那么在业务层,我必须创建一个“传递”函数,如 ApplicationBLL.GetAllUnhiddenApplications,它将返回 ApplidationDLL.GetAllUnhiddenApplications。我必须对所有查询重复它,基本上整个 BLL 最终将成为 DLL 的“通过”层。你能给我一个具体的例子来说明参考上述模式的业务层将用于什么?
如果我将代码放在业务层中,那么 linq 将存在于业务层中,最终将由实体框架转换为 SQL,因此就像将查询逻辑暴露给业务层一样。
我们的环境 我们的环境是快节奏的,并且希望通过适度适当的方法尽快完成这个项目,其中有一个单独的层,但是将来当我们有时间时,我们可能会重构代码并使其真正健壮,但它是目前还不是问题,但如果时间允许,我们希望现在就实施最佳实践,而不是在未来重构代码。