我很好奇我是否应该将我的年龄方法放入我的POCO课程中,或者将此方法留在我的业务层中。
现在我有4层:
目前我想查询年龄超过13岁的用户。所以我在讨论是否应该在BO中的POCO类中有一个返回当前用户年龄的方法,或者我应该从我的业务层查询DOB如下所示
BO
public class Person:Base
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public DateTime DOB { get; set; }
public int Age
{
get
{
DateTime today = DateTime.Today;
int age = today.Year - DOB.Year;
return age;
}
}
}
业务层
public class PersonBLL
{
private PersonDAL db = null;
public PersonBLL()
{
db = new PersonDAL(new AppContext());
}
public IEnumerable<Person> PersonGEAge(int age)
{
DateTime td = DateTime.Now;
DateTime birthday = DateTime.Now;
DateTime date = new DateTime(birthday.Year - age, td.Month, td.Day, 4, 5, 6);
return db.PersonDOB(date);
}
}
答案 0 :(得分:3)
您应该查询业务层(通过服务)以获取具有指定年龄的所有业务实体。
但是,您的服务层可以返回包含Age
属性而不是DateOfBirth
换句话说:您的服务可以与业务实体一起使用,同时它专门化它返回到UI的对象。已完成将业务域中的信息模式与UI中的信息模式(可以是业务实体的聚合或来自特定实体的部分信息)分离。
当涉及到信息结构时,UI往往比后端有更多的更改。通过建议的分离,您不必为UI中的每个更改重新构建业务域。相反,您只需更改服务如何将UI所需的信息组合在一起。