2016-10-12 12 views
0

응용 프로그램에는 DataEntityModel.edmx (엔터티 프레임 워크 모델) 및 리포지토리 클래스가있는 데이터 액세스 계층이 있습니다. 코드 아래엔터티 프레임 워크에 개체 추가

enter image description here

내 저장소 클래스입니다.

namespace DataModel.Repository 
{ 
public class ProductRepository 
{ 
    internal WebApiDbEntities Context; 
    internal DbSet<Product> DbSet; 

    public ProductRepository(WebApiDbEntities context) 
    { 
     this.Context = context; 
     this.DbSet = context.Set<Product>(); 
    } 

    public virtual void Insert(Product entity) 
    { 
     DbSet.Add(entity); 
    } 

} 

}

상담자 삽입 DbSet.Add (법인) 방법을 사용하고있다. 그러나 Entity Framework는 자체 Add 메서드를 생성합니다. Context.Products.Add (엔터티)

그래서이 두 메서드의 차이점은 무엇입니까? 왜 대부분의 시간 DbSet.Add (엔티티)가 사용됩니까 ??

답변

3

리포지토리는 DbContext의 사용을 대체합니다.

그래서

엔티티를 추가, 대신의 :

var dbContext = new WebApiDataModel(); 
dbContext.Products.Add(entity) 

당신은 저장소 사용 : 결국

var dbContext = new WebApiDataModel(); 
var productRepository = new ProductRepository(dbContext); 
productRepository.Insert(entity); 

, 모두 전화 DbSet<Product>.Add(), 그러나 이유 왜이있다 Entity Framework를 사용하여 저장소 패턴을 소개하고자 할 수 있습니다.

+0

내 질문에 우리는 dbContext.Products.Add (엔티티) 메서드를 호출 할 수있는 productRepository.Insert() 메서드에 있습니다. 하지만 왜 우리는 dbContext.Products.Add (엔터티)보다는 DbSet.Add (엔터티)를 사용합니까? –

+0

네, 둘 중 하나를 사용할 수 있습니다. 누군가 (당신은 분명히) 저장소 패턴을 소개하기로 결정했습니다. 이것을 사용하여 DbContext의 사용을 추상화합니다. 그래서 예, 둘 다 사용할 수 있지만 둘 중 하나를 선택해야합니다. – CodeCaster

관련 문제