相关疑难解决方法(0)

具有实体框架4.1和父/子关系的存储库模式

我仍然对存储库模式有些困惑.我想要使​​用此模式的主要原因是避免从域调用EF 4.1特定数据访问操作.我宁愿从IRepository接口调用泛型CRUD操作.这将使测试更容易,如果我将来必须更改数据访问框架,我将能够这样做,而无需重构大量代码.

这是我的情况的一个例子:

我在数据库中有3个表:Group,Person,和GroupPersonMap.GroupPersonMap是一个链接表,只包含主键GroupPerson主键.我用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

35
推荐指数
1
解决办法
2万
查看次数