2010-06-08 3 views
2

EF4와 내장 된 자체 추적 엔터티 템플릿을 사용하여 모델에서 내 엔터티를 생성합니다. 또한 "ObjectContext"에 대한 모든 참조가 "IObjectContext"로 변경되도록 T4 템플릿을 수정했으며 자동 생성 된 컨텍스트 (이 모든 것은 테스트 및 조롱 목적)에 인터페이스를 적용했습니다.엔터티 프레임 워크 4, 자체 추적 엔터티 T4 템플릿, ApplyChanges() 확장 메서드

//my interface 
public interface IDatabaseEntities 
{ 
    IObjectSet<Customer> Customers {get;} 
    int SaveChanges(); 
} 

//self tracking entity auto gen code, with my mods 
public partial class DatabaseEntities : ObjectContenxt, IDatabaseEntities 
{ 
    //auto gen stuff here 
    public IObjectSet<Customer> Customers 
    //more auto gen stuff 
} 

T4 템플릿에서는 "ObjectSet"유형의 개체에서만 작동하는 확장 메서드 인 ApplyChanges()를 생성합니다. 그래서 나는 "_context.Customers.ApplyChanges (customer)"라고 부를 수 없다. " 왜냐하면 나는 "IObjectSet"유형으로 작업하기 때문입니다. 분리 된 엔터티를 업데이트하려면이 메서드를 호출해야합니다. 이제 구체적인 ObjectSet 클래스로 작업하지 않기 때문에 엔티티를 업데이트하는 방법을 알 수 없습니다.

답변

0

방법은 다음과 같은 확장 방법에 대해 :

public static class EntityFrameworkExtensions 
{ 
    public static void ApplyChanges<TEntity>(this IObjectSet<TEntity> objectSet, TEntity entity) 
     where TEntity : class 
    { 
     if (objectSet is ObjectSet<TEntity>) 
     { 
      ((ObjectSet<TEntity>)objectSet).ApplyChanges(entity); 
     } 
    } 
} 
관련 문제