业务对象方法

时间:2016-05-18 15:44:22

标签: c# asp.net-mvc-4 asp.net-web-api2

我很好奇我是否应该将我的年龄方法放入我的POCO课程中,或者将此方法留在我的业务层中。

现在我有4层:

  • BusinessObject的(BO)
  • 数据访问层(DAL)
  • 的UserInterface(UI)
  • 服务。

目前我想查询年龄超过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);
        }
    }

1 个答案:

答案 0 :(得分:3)

您应该查询业务层(通过服务)以获取具有指定年龄的所有业务实体。

但是,您的服务层可以返回包含Age属性而不是DateOfBirth

的DTO

换句话说:您的服务可以与业务实体一起使用,同时它专门化它返回到UI的对象。已完成将业务域中的信息模式与UI中的信息模式(可以是业务实体的聚合或来自特定实体的部分信息)分离。

当涉及到信息结构时,UI往往比后端有更多的更改。通过建议的分离,您不必为UI中的每个更改重新构建业务域。相反,您只需更改服务如何将UI所需的信息组合在一起。