日期:2014-05-18  浏览次数:20790 次

EntityFramework 多对多 的Include问题
比如在asp.net的Membership当中aspnet_Users和aspnet_Roles使用aspnet_UserInRoles表进行关联的,也就是说aspnet_users和aspnet_usersinroles是一对多关联,aspnet_roles和aspnet_usersinroles也是一对多关联,但是我使用ADO.net Entity Framework做ORM的时候发现Entity Framework把aspnet_Users和aspnet_roles自动设置成了多对多关联。也就是自动生成的对象模型中aspnetUsers实体类包含一个aspnet_roles的集合,aspnet_roles实体类包含了一个aspnet_Users集合。
  现在我打算在装载aspnet_roles数据时同时也加在其对应的user信息过来,如果是一对多的关系,使用[Include]特性修饰aspnet_Users属性然后使用ObjectQuery<T>.Include("aspnet_Users");没有问题,但是对于这种多对多关系,使用[Include]特性修饰aspnet_roles的aspnet_Users属性,报错,提示错误 1 成员“aspnet_Users.aspnet_Roles”的 Include 规范无效。 只能对应用了 AssociationAttribute 的成员指定非投影包含。
  那么我使用[Association]修饰Roles的aspnet_users属性,要输入关联的主键和外键名称参数,但是实际上这两个表是通过aspnet_usersinroles这个“第三方”关联的,无法指定主键和外键参数。
  所以请问各位,怎么使用EntityFramework处理这种"多对多"关系的预装载问题?
  多谢!

------解决方案--------------------
http://www.cnblogs.com/dudu/archive/2011/07/09/entity_framework_many_to_many.html