Попытка создать проект MVC с использованием EF и подхода Model first.
Чтобы реализовать его таким образом, чтобы веб-части и части данных были слабо связаны, я пытаюсь реализовать шаблон репозитория, но, прочитав множество статей, я все еще пытаюсь понять, какие объекты мой интерфейс репозитория должен возвращать или как они должен привязываться/сопоставляться с моделью «M» в моем проекте MVC.
Вот очень упрощенный пример того, что я прошу.
//Repository Interface
public interface IMemberRepository
{
Member GetById(int id);
IEnumerable<Member> FindByName(string name);
}
//Repository Interface Implementation
public class MemberRepository : IMemberRepository
{
//My DB Context object created by EF
private MyContainer context;
public MemberRepository(MyContainer context)
{
this.context = context;
}
public Member GetById(int id)
{
return context.Members.SingleOrDefault(x => x.Id == id);
}
public IEnumerable<Member> FindByName(string name)
{
return context.Members.Find(x => x.name == name);
}
}
Таким образом, используя Ninject в качестве DI-фреймворка, я мог вызвать это из моего контроллера следующим образом:
public class GroupsController : Controller
{
public ViewResult Find(string name)
{
IMemberRepository repo =
ObjectFactory.Instance.CreateInstance<IMemberRepository>();
return repo.FindByName(name);
}
}
На данный момент я просто не понимаю, как мой объект-член (из модели EF) должен привязываться/сопоставляться с моим объектом модели-члена «MVC». Кажется, мне не хватает какого-то слоя отображения, или я просто полностью сбился с пути. Если бы я напрямую ссылался на свой сгенерированный EF класс, мне показалось бы, что я отрицаю смысл использования интерфейса и инфраструктуры DI. Любые советы или указания в этот момент будут оценены.