2017-09-22 2 views
1

ORM ist Entity Framework Core. Es gibt ungefähr 100 Entitätstypen in DataModel. Gibt es eine Möglichkeit, die Eingabe des grundlegenden CRUD-Operationscodes für jeden von ihnen zu vermeiden?Entity Framework Core: Automatisieren implementieren CRUD für jede Entität?

public static async Task UpdateAsync(this Foo foo) 
{ 
    using (var db = new DBContext()) 
    { 
     db.Foo.Update(); 
     await db.SaveChangesAsync(); 
    } 
} 

public static async Task UpdateAsync(this Bar bar) 
{ 
    using (var db = new DBContext()) 
    { 
     db.Bar.Update(bar); 
     await db.SaveChangesAsync(); 
    } 
} 

UPDATE: Wie Verwendung Generika in diesem Fall?

public static async Task RemoveFooAsync(int fooID) 
{ 
    using (var db = new DBContext()) 
    { 
      db.Foo.Remove(db.Foo.Single(x => x.FooID == fooID)); 
      await db.SaveChangesAsync(); 
    } 
} 
+0

Sie könnten Generika verwenden? 'UpdateAsync (dieses T obj) wobei T: IMyEntity' – poke

+0

Für den Fall des Entfernens durch die ID, müßten Sie offensichtlich eine allgemeine' Id' im 'IMyEntity' Typ haben. – poke

Antwort

1

Entity Frame Arbeit selbst ist generisch, daher müssen Sie das nicht tun.

using (var dbCtx = new SchoolDBEntities()) 
    { 
     //Add newStudent entity into DbEntityEntry and mark EntityState to Added 
     dbCtx.Entry(newStudent).State = System.Data.Entity.EntityState.Added; 

     // call SaveChanges method to save new Student into database 
     dbCtx.SaveChanges(); 
    } 

hier der Eintrag param kann in App Db Kontext jede Art von <> Entity sein

erstellen solche wiederverwendbare Methode, um die Entity Object

Verwenden Aktualisieren Sie die gleiche Art und Weise mit:

//save modified entity using new Context 
using (var dbCtx = new SchoolDBEntities()) 
{ 
    //3. Mark entity as modified 
    dbCtx.Entry(stud).State = System.Data.Entity.EntityState.Modified;  

//4. call SaveChanges 
dbCtx.SaveChanges(); 
} 
+0

Ich benutze Entity Framework Core – AsValeO

+0

spielt keine Rolle, sollte Version 5 oder höher sein –

+0

Update auf die gleiche Weise. –

Verwandte Themen