2011-01-26 4 views
1

나는 결코 사용하지 않았다 POCOs, 그래서 나는 내 비즈니스 객체 클래스에 많은 로직을 넣는 습관이있다. 따라서 클래스 레이아웃과 여기에 필요한 사고 프로세스에 대한 중요한 개념을 놓치고 있다고 생각합니다.POCO를 사용할 때 비헤이비어 로직을 어디에 둘까요?

그래서 나는 올바른 방향으로 나의 두뇌를 가리 키도록 몇 가지 아이디어를 고맙게 생각합니다.

두 개의 클래스가 있다고 가정 해 보겠습니다. 회사 및 직원. 다양한 행동/검증 등을 처리하는 "주변"에 어떤 수업을 만들지에 대한 몇 가지 예를 들려 줄 수 있습니까?

(일부 클래스 이름, 자신의 목적에 대한 간단한 설명과 같이) (또는 다른 예 같아요 마찬가지로 유용 할 것이다.)

답변

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

+0

나는, I 참조 이 속성 기능에 대해 몰랐습니다. 나는 말하기를 잊었지만 DAL 어셈블리에있는 POCO에 대해 생각하고있었습니다. 그건 내가 이런 식으로 확장하는 것을 허락하지 않을 것이다 .. – bretddog

+0

당신은 실제로 문제를 일으키지 않을 것이고 Data Annotations에 와서 그것을 할 필요가 없다. 올바른 유효성 검사를 위해 setter에 ur custom logic을 쓸 수있다. 그러나 표준 및 쉬운 방법은 특성으로 그것을이다. – Praneeth

0

내가 일반적으로 논리 코드 그룹에 대한 외관 레이어를 만들 내 시스템. 예를 들어 사용자가 관리자 자격 증명을 가지고있는 경우 회사 데이터와 직원 데이터 만 처리하면됩니다.

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를 가지고 모든 외관 클래스를 인스턴스화하고 그 모든 것을 GUI 편이다 : 그래서 그 경우에 다음과 같이 나는 AdminFacade 클래스를 만들 것이다. 또한 GetCompanyByEmployee 메서드의 시작 부분에 유효성 검사를 추가하고 employee.startdate가 1 년 미만이라고 말할 경우 예외를 throw 할 수 있습니다.

희망이 있습니다.

관련 문제