여기엔티티 프레임 워크와 함께 적절한 일반 저장소 구조 C# MVC를 사용 할 수 없습니다
public interface IRepository<TEntity>
{
void Insert(TEntity entity);
void Delete(TEntity entity);
}
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
DbSet<TEntity> DbSet;
TestDBEntities dataContext;
public Repository(TestDBEntities dataContext)
{
this.dataContext = dataContext;
this.DbSet = dataContext.Set<TEntity>();
}
public void Insert(TEntity entity)
{
DbSet.Add(entity);
dataContext.SaveChanges();
}
public void Delete(TEntity entity)
{
DbSet.Remove(entity);
}
public IQueryable<TEntity> SearchFor(Expression<Func<TEntity, bool>> predicate)
{
return DbSet.Where(predicate);
}
}
으로 C# MVC에서 저장소 패턴을 구현하는 IRepository와라는 클래스 저장소의 이름과 인터페이스 내 컨트롤러있다 :
public class HomeController : Controller
{
private IRepository<Tbl_EmpDetails> _EmpDetails;
public HomeController()
{
_EmpDetails = new Repository<Tbl_EmpDetails>(new TestDBEntities());
}
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(Tbl_EmpDetails empDetials)
{
_EmpDetails.Insert(empDetials);
return Redirect("/");
}
}
컨트롤러에서 내 생각에 따라 EDMX 인스턴스가 삽입, 업데이트, 삭제 또는 컨트롤러의 다른 함수를 호출 할 때 반복 작성되므로 "new TestDBEntities()"를 사용할 필요가 없습니다. 저장소의 사용. (TestDBEntity 내 EDMX의 개체입니다).
_EmpDetails = new Repository<Tbl_EmpDetails>(new TestDBEntities());
Tbl_EmpDetails는 EDMX에서의 테이블입니다.
내 코드에 따라 저장소 구조를 구현하는 가장 좋은 방법은 무엇이며 내 코드를 개선하기위한 다른 제안이있는 경우 제안하십시오.
미리 감사드립니다.
http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc에서 살펴 보는 것이 매우 도움이된다. -4-asp-net-mvc 응용 프로그램에서 저장소 및 작업 단위 패턴 구현. 그것은 단계별로 직접 컨텍스트 대신 리포지토리의 사용을 변경하는 것을 설명합니다. –