2017-03-07 1 views
0

Ich habe folgende Methode in meinem Projekt.Entity Framework Map Modell zu Tabelle

public IEnumerable<T> GetAll() 
    { 
     return _context.Set<T>().ToList(); 
    } 

Dann ist mein DbContext hat dieses ..

 protected override void OnModelCreating(DbModelBuilder modelBuilder) 
     { 

       Entity<Product>.ToTable("Product"); 

     } 

Dies funktioniert gut, solange das "Produkt" Modell ist in demselben Projekt.

Allerdings werden verschiedene Clients meine DataAccess-Ebene konsumieren und sie werden Modelle verschiedener Typen übergeben. Wie kann ich EntityFramework anweisen, ein Modell dynamisch an eine "Tabelle" im SQL-Server zu binden?

+0

Sie können ihre eigenen [EntityTypeConfiguration] (http://www.entityframeworktutorial.net/code-first/entitytypeconfiguration-class.aspx) Klassen bereitstellen. –

+0

Ich habe es schwer, ein Beispiel dafür zu finden – Khan

Antwort

0

Ich konnte dieses Problem beheben, indem Sie folgendermaßen vorgehen.

public class Repository<T> : DbContext, IRepository<T> where T : BaseModel 
{ 

    public DbContext _context { get; set; } 
    public DbSet<T> _dbSet { get; set; } 

    public Repository(string con) 
     : base(con) 
    { 

    } 

    public IEnumerable<T> GetAll() 
    { 
     return _dbSet; 
    } 

    public void Add(T entity) 
    { 
     _dbSet.Add(entity); 
     _context.SaveChanges(); 
    } 


} 

Basicly die Schritte sind ...

  • A. Klasse DbContext erben müssen.
  • Eine generische Eigenschaft für DbSet.

Jetzt DbSet ist eine generische Tabelle, die Sie in Ihrem Generic Repository verwenden können.

Verwandte Themen