2012-04-17 4 views
0

고유 한 SaveChanges를 호출하여 내가 사용하는 모든 저장소의 모든 변경 사항에 영향을 미치려면 어떻게해야합니까? 모든 저장소와 저장 방법을 포함하는 클래스를 만들어야합니까? 가장 좋은 방법은 무엇입니까?SaveChanges가 여러 저장소에 적용됨

public ActionResult Create() 
{ 
    Product Product = new Product() { Id = 1, Name = "test", Amount = 1 }; 

    if (_productService.Insert(Product)) 
    { 
     context.SaveChanges(); 

     return View(); 
    } 

    return RedirectToAction("Index"); 
} 

이가 올바른지 :


나는이 노력하고있어?

답변

0

가장 좋은 방법은 작업 단위라고하며 일반적으로 저장소의 생성자로 전달되는 EF 컨텍스트에 대한 래퍼 클래스입니다. 이 새로운 수업에 Save으로 전화하십시오.

+0

그래서 (DbContext에서 상속받은) Entitie의 인스턴스를 만들어 저장소에 전달한 다음 entitie.SaveChanges를 호출해야합니까? – MuriloKunze

+0

저장소 외부에서 변경 사항을 저장하지 않습니다. 리포지토리는 데이터 저장에 대한 책임이 없으며 새로운 컨텍스트 래퍼를 사용해야합니다. –

+0

네, 그렇습니다. – MuriloKunze

0

리포지토리 생성자에 IDbContext/ObjectContext를 전달합니다. 저장소로 작업하고 저장소가 아닌 컨텍스트에서 저장을 호출하십시오.

리포지토리가 필요하다면 다시 생각해 보겠습니다.

+0

그래, 나는 저장소가 좋지 않다는 Ladislav의 말을 본다. 데이터를 저장하기 전에 몇 가지 검증이 필요하다. 그래서 서비스 계층 만 사용하고 IDbContext 메소드를 호출하면 어떨까? 이거 좋은가요? – MuriloKunze

관련 문제