使用POCO时在哪里放置行为逻辑?

时间:2011-01-26 21:25:17

标签: c# .net vb.net poco behavior

我从未使用 POCOs ,因此我习惯在业务对象类中添加大量逻辑。因此,我相信我缺少一些关于类布局的重要概念,以及这里需要的思考过程。

所以我很欣赏一些能让我的大脑指向正确方向的想法;

假设你有两个班级;公司和员工。你能举一些例子说明你将围绕这些类建立什么类来处理各种行为/验证等等? (像某些类名,以及对其目的的简要描述)

(或者我认为其他任何例子都是有用的。)

2 个答案:

答案 0 :(得分:1)

您可以通过为该业务类创建元数据类来放置验证和业务逻辑 像这样

[MetadataType(typeof(EmployeeMetadata))]
    public partial class Employee
    {
        public class EmployeeMetadata
        {
            [Required(ErrorMessage="Employee Name is Required")]
            [StringLength(50, ErrorMessage="Must be under 30 Characters")]
            public string Name { get; set; }
         }
    }

这些类称为“好友类” 请参阅this

答案 1 :(得分:0)

我通常为系统中的任何逻辑代码分组创建一个外观层。例如,假设用户具有管理员凭据,则用户只需要处理公司数据和员工数据。所以在这种情况下我会创建一个AdminFacade类,如下所示:

public class AdminFacade 
{  
   public Company GetCompanyByEmployee( Employee employee )
   {
        // open a db session / web service call etc.
        // run a query to find the company by employe id.
        // populate the company object 
        // close db session
        // return the populated customer object
   } 
}

我通常让我的GUI实例化所有Facade类,这就是GUI处理的全部内容。您还可以在GetCompanyByEmployee方法的开头添加验证,如果让employee.startdate少于一年,则抛出异常。

希望有所帮助。