我仍然对存储库模式有些困惑.我想要使用此模式的主要原因是避免从域调用EF 4.1特定数据访问操作.我宁愿从IRepository接口调用泛型CRUD操作.这将使测试更容易,如果我将来必须更改数据访问框架,我将能够这样做,而无需重构大量代码.
这是我的情况的一个例子:
我在数据库中有3个表:Group,Person,和GroupPersonMap.GroupPersonMap是一个链接表,只包含主键Group和Person主键.我用VS 2010设计器创建了3个表的EF模型.EF很聪明,可以假设它GroupPersonMap是一个链接表,因此它不会在设计器中显示它.我想使用我现有的域对象而不是EF生成的类,所以我关闭了模型的代码生成.
我与EF模型匹配的现有类如下:
public class Group
{
public int GroupId { get; set; }
public string Name { get; set; }
public virtual ICollection<Person> People { get; set; }
}
public class Person
{
public int PersonId {get; set; }
public string FirstName { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一个通用的存储库接口,如下所示:
public interface IRepository<T> where T: class …Run Code Online (Sandbox Code Playgroud) c# domain-driven-design aggregateroot repository-pattern entity-framework-4.1