У меня есть интерфейс с именем IRepository и класс с именем Repository для реализации Repository шаблона в C# MVC, какНевозможно использовать правильную Generic Repository структуры C# MVC С Entity Framework
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);
}
}
и вот мой контроллер:
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("/");
}
}
Согласно моей идее в контроллере, я не должен использовать «новые TestDBEntities()», потому что экземпляр EDMX будет создаваться снова и снова, когда вставка, обновление, удаление или любая другая функция контроллера вызовет и не будет использование репозитория. (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/реализации-The-хранилищу и единичную из-человеко-моделей-в-в-Asp-нетто-MVC-приложения. он описывает изменение использования репозитория вместо прямого контекста шаг за шагом. –