2016-10-12 2 views
0

In einer Anwendung hat es Datenzugriffsschicht.In der es DataEntityModel.edmx (Entityframework-Modell) und Repository-Klasse hat.Hinzufügen von Objekt in Entity Framework

enter image description here

Below-Code ist meine Repository-Klasse.

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); 
    } 

} 

}

Frage ist, habe ich DbSet.Add (entity) Verfahren zum Einfügen verwendet. Aber Entity Framework generiert seine eigene Add-Methode Context.Products.Add (Entität)

Also, was ist der Unterschied zwischen diesen beiden Methoden. Warum wird die meiste Zeit DbSet.Add (Einheit) verwendet ??

Antwort

3

Ein Repository ersetzt die Verwendung des DbContext.

So eine Einheit hinzuzufügen, statt von:

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

Sie verwenden ein Repository:

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

Am Ende beide Anruf DbSet<Product>.Add(), aber es gibt Gründe, warum Sie Vielleicht möchten Sie das Repository-Muster mit Entity Framework einführen.

+0

meine Frage ist mit in der ProductRepository.Insert() -Methode können wir dbContext.Products.Add (Entität) -Methode aufrufen. Aber warum verwenden wir DbSet.Add (entity) anstatt dbContext.Products.Add (entity)? –

+0

Ja, Sie können beides verwenden. Jemand (nicht Sie, anscheinend) entschied sich, das Repository-Muster einzuführen. Sie verwenden das, um die Verwendung von DbContext wegzuspalten. Also ja, du kannst beides benutzen, aber du solltest beides wählen. – CodeCaster

Verwandte Themen