我不确定术语是否正确,但是我有点困惑如何设置我的三层系统。
假设我在我的数据库中有一个用户表。
在我的数据访问层(DAL)中,我有一个UserDB类,它调用存储过程将数据插入、更新和删除到数据库中。 我还有一个UserDetails类,用于在UserDB中返回和传递对象。
现在我不确定如何在我的业务逻辑层(BLL)中使用它。 我需要为用户再创建另一个BLL对象类吗? 如果是这样,这不是多余的吗? 还是我只需在整个BLL中使用UserDetails类即可?
我不确定术语是否正确,但是我有点困惑如何设置我的三层系统。
假设我在我的数据库中有一个用户表。
在我的数据访问层(DAL)中,我有一个UserDB类,它调用存储过程将数据插入、更新和删除到数据库中。 我还有一个UserDetails类,用于在UserDB中返回和传递对象。
现在我不确定如何在我的业务逻辑层(BLL)中使用它。 我需要为用户再创建另一个BLL对象类吗? 如果是这样,这不是多余的吗? 还是我只需在整个BLL中使用UserDetails类即可?
通常情况下,您需要在BLL中执行业务规则。例如,您可能允许普通呼叫中心员工提供新服务的10%折扣,但允许经理提供20%的折扣。您需要在BLL中编写类似以下代码的业务规则:
// Pseodocode
double Discount
{
set
{
if (value > 10% AND Employee Is Not Manager) then throw Exception
if (value > 20%) then throw Exception
discount = value;
}
}
DAL:
namespace DAL.Repository
{
public class UsersRepository
{
public static IList GetUser(string UserId)
{
using(MyDBEntities context=new MyDBEntities())
{
// it calls SP in DB thru EF to fetch data
//here you can also context.user to fetch data instead of SP
return context.GetUser(UserId).ToList();
}
}
}
}
BLL
namespace BLL
{
public class User
{
public static IList GetUser(string UserId)
{
return DAL.Repository.UserRepository.GetUser(UserId);
}
}
}
PL
ddlUser.DataTextField = "UserName";
ddlUser.DataValueField = "UserId";
ddlUser.DataSource= BLL.User.GetUser(string.Empty);
ddlUser.DataBind()