我正在构建我的第一个企业级解决方案(至少我试图使其成为企业级).我正在尝试遵循最佳实践设计模式,但我开始担心我可能在抽象方面走得太远了.
我正在尝试将我的asp.net webforms(在C#中)应用程序构建为n层应用程序.我使用XSD强类型数据集创建了一个数据访问层,该数据集与SQL服务器后端连接.我通过我以1:1为基础创建的一些业务层对象访问DAL到数据集中的数据表(例如,数据集中用户数据表的UsersBLL类).我正在BLL中进行检查,以确保传递给DAL的数据遵循应用程序的业务规则.这一切都很好.我遇到困难的地方是将BLL连接到表示层的点.例如,我的UsersBLL类主要处理整个数据表,因为它与DAL连接.我现在应该创建一个单独的"用户"(Singular)类来映射单个用户的属性,而不是多个用户?这样我就不必在表示层中搜索数据表了,因为我可以使用在User类中创建的属性.或者以某种方式尝试在UsersBLL中处理这个更好?
很抱歉,如果这听起来有点复杂......以下是UsersBLL的代码:
using System;
using System.Data;
using PedChallenge.DAL.PedDataSetTableAdapters;
[System.ComponentModel.DataObject]
public class UsersBLL
{
private UsersTableAdapter _UsersAdapter = null;
protected UsersTableAdapter Adapter
{
get
{
if (_UsersAdapter == null)
_UsersAdapter = new UsersTableAdapter();
return _UsersAdapter;
}
}
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, true)]
public PedChallenge.DAL.PedDataSet.UsersDataTable GetUsers()
{
return Adapter.GetUsers();
}
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public PedChallenge.DAL.PedDataSet.UsersDataTable GetUserByUserID(int userID)
{
return Adapter.GetUserByUserID(userID);
}
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public PedChallenge.DAL.PedDataSet.UsersDataTable GetUsersByTeamID(int teamID)
{
return Adapter.GetUsersByTeamID(teamID);
}
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Select, false)]
public PedChallenge.DAL.PedDataSet.UsersDataTable GetUsersByEmail(string Email)
{
return Adapter.GetUserByEmail(Email); …Run Code Online (Sandbox Code Playgroud)