2013-03-19 2 views
0

저는 수많은 비즈니스 엔티티가있는 응용 프로그램을 만들고 있습니다. 하나가 수정 될 때마다 해당 레코드를 적절히 타임 스탬프 처리하고 생성/수정 사용자를 배치해야합니다. 해당 엔티티에 대한 엔티티 및 서비스 클래스 그룹이 있습니다. 모든 엔티티는 IBaseEntity를 구현하고 BaseService를 상속합니다.참조로 기본 클래스에 인터페이스 전달

public interface IBaseEntity 
{ 
    int Id { get; set; } 
    DateTime CreatedOn{ get; set; } 
    DateTime LastModifiedOn { get; set; } 
    Employee CreatedBy { get; set; } 
    Employee LastModifiedBy { get; set; }  
} 

public abstract class BaseService 
{ 
    public void Create(IBaseEntity entity) 
    { 
     entity.CreatedBy = new Employee { Id = entity.Id }; 
     entity.CreatedOn = DateTime.UtcNow; 
     entity.LastModifiedBy = new Employee { Id = entity.Id }; 
     entity.LastModifiedOn = DateTime.UtcNow; 
    } 
} 

내 EmployeeService에서 엔터티를 추가하거나 연결하기 전에 내 Base Update 및 Create 메서드를 호출합니다.

public Employee Create(Employee employee) 
{ 
     // Create User 
     base.Create(employee); 
     context.Employees.Add(employee);    
     context.SaveChanges(); 
} 

이상적으로 엔티티를 참조로 전달하고 싶습니다. 그러나 가능하지 않습니다. 내 질문은 어떻게이 코드를 중앙 집중화하고 각 서비스 클래스 내에서 구현할 필요가 없도록이 작업을 수행 할 수 있는가입니다.

+1

모든 클래스 인스턴스는 C#의 참조입니다. 제발, 더 설명해. – Igor

+0

참조로 전달할 수없는 이유는 무엇입니까? 귀하의 코드가 현 상태이므로 Create 클래스에 직원 클래스를 전달하는 데 문제가 없습니다. – shenku

+0

죄송합니다. 분명히해야합니다. 현재로서는이 솔루션을 구현하지 못합니다. 기본 클래스에서 편집 된 값은 내가 생각한대로 직원 엔티티에 영향을 미치지 않습니다. 나의 다음 생각은 붙이기 전에 참조로 그것을 전달하는 것이었다. 예, 전달할 수 있지만 참조 (Create employee)를 전달하려고하면 컴파일러에서 IBaseEntity가 예상대로 Employee를 전달할 수 없다는 불평을합니다. – XVargas

답변

1

이고르가 옳았습니다. "datetime2 데이터 형식을 datetime 데이터 형식으로 변환하면 범위를 벗어나는 값이 발생했습니다." 값이 설정되지 않았다고 가정했습니다. 실제로 완전히 다른 문제 때문이었습니다. 나를 올바른 방향으로 가리켜 주셔서 감사합니다.