2017-09-22 17 views
1

ORM은 Entity Framework Core입니다. DataModel에는 약 100 가지 유형의 엔티티가 있습니다. 각각에 대해 상용구 기본 CRUD 작업 코드를 입력하지 않는 방법이 있습니까?Entity Framework 핵심 : 각 엔터티에 대한 CRUD 구현 자동화?

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 :이 경우 어떻게 사용 제네릭?

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

제네릭을 사용할 수 있습니까? 'UpdateAsync (this T obj) T : IMyEntity' – poke

+0

id에 의한 제거의 경우, 분명히'IMyEntity' 타입 안에 일반적인'Id'가 있어야합니다. – poke

답변

1

엔티티 프레임 작업 자체는 일반이므로 수행 할 필요가 없습니다.

//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(); 
} 
: 여기

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

엔트리 PARAM은

이 업데이트 같은 방식으로 엔터티 개체

사용을 사용하여 재사용 가능한 방법을 만들기 앱 DB 컨텍스트에서 <> 엔터티의 모든 유형이 될 수 있습니다

+0

나는 엔터티 프레임 워크 코어 – AsValeO

+0

을 사용합니다. 중요하지 않습니다. 버전 5 이상이어야합니다. –

+0

같은 방식으로 업데이트하십시오. –