在EntityFramework,POCO实体和存储库模式中访问多对多表的最佳方法

时间:2012-03-30 07:48:24

标签: linq entity-framework c#-4.0 repository-pattern poco

我正在使用Entity Framework,POCO实体和存储库模式进行数据访问。我有一个存储库类,它返回特定类型的Iqueryable。

在我的数据库中,我有一对多关系表。 表类似于TemplatesTable和UserTable以及联结UserTemplate表

一个用户可以拥有多个模板。因此,有一个用于映射userid和templateid的联结表。现在我必须显示所有模板数据,如名称,用户的其他详细信息。 以EF POCO方式执行此操作的最佳方法是什么?

现在我正在遵循这种方法,但我明白这不是最好的方法。

var Tempaltes = TemplateRepository.All();

var templateforUser = UserTemplateRepository.where(UserId==1)

var userTemplates= from tmp in Templates

                   join tmpusr in templateforUser  on tmp.TemplateId equals tmpusr.TemplateId
                            select tmp;

return userTemplates.ToList();

请建议执行此操作的最佳方法是什么。

1 个答案:

答案 0 :(得分:1)

正确的方法是在Templates实体上拥有User导航属性。您只需要使用急切或延迟加载来填充导航属性,而您永远不需要使用自定义连接等任何内容。