2016-10-12 12 views
0

アプリケーションでは、DataEntityModel.edmx(エンティティフレームワークモデル)とリポジトリクラスを持つデータアクセスレイヤがあります。コードの下Entity Frameworkにオブジェクトを追加する

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(エンティティ)

したがって、これら2つの方法の違いは何ですか?なぜ のほとんどの時間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

私の質問はproductRepository.Insert()メソッドでは、dbContext.Products.Add(entity)メソッドを呼び出すことができます。しかし、なぜ私たちはdbContext.Products.Add(エンティティ)ではなくDbSet.Add(エンティティ)を使用していますか? –

+0

はい、いずれかを使用できます。誰か(あなたは、明らかに)リポジトリパターンを導入することを決めました。これを使用してDbContextの使用を抽象化します。そう、両方を使うことができますが、いずれかを選択する必要があります。 – CodeCaster

関連する問題