我正在创建一个具有以下层的 WPF 应用程序:
UI(视图+视图模型)-> BLL-> DAL
所有这些都引用了领域模型层。
目前,我正在通过 BLL 将我的所有数据库调用从 UI 传送到 DAL。但我不确定这是正确的方法。
BLL 中的大多数方法如下所示:
public ICollection<User> GetUsers()
{
return dbAccess.GetUsers();
}
这又在 DAL 中调用类似的方法:
public ICollection<User> GetUsers()
{
using (var context = new DbContext())
{
return context.Users.ToList();
}
}
1) 这种将呼叫从 BLL 传送到 DAL 的方式似乎是多余的。当然,也有一些 BLL 方法实际上包含了一些业务逻辑。我应该放弃 BLL 吗?
2)这种方法的另一个问题是我不能使用延迟加载,因为 DbContext 是在 DAL 中创建和处置的。我猜这可以通过在 ViewModel 中创建 DbContext 来解决,但是我应该什么时候处理它呢?
3)最后,由于我没有使用延迟加载,我必须急切地加载我的相关实体。但并非所有视图都需要相同的相关实体,因此我经常会得到几个返回相同实体但包含不同的方法的方法。这样好吗?
X) 我所有的数据库方法都存在于一个名为 DbAccess 的大型类中。为我的每个 ViewModel(或者我的每个实体)创建一个数据库服务类会更好吗?