.net实体模型框架中多对多关系中的问题

时间:2011-04-17 06:40:35

标签: c# entity-framework entity-framework-4 linq-to-entities entity-relationship

这是我的代码:

var q = (from m in context.aspnet_Users
                     where m.UserName.Equals(username)
                     select new { m, m.aspnet_Roles.SourceRoleName }).FirstOrDefault();

但它让我犯了错误:

  

指定的类型成员   “SourceRoleName”不受支持   LINQ to Entities。只有初始化者,   实体成员和实体导航   支持属性。

我如何使用接口表解决这个多对多关系,但.net框架删除接口表并生成与多表对多的表映射关联。

我需要角色名称如何才能在这种模型中获得它?

1 个答案:

答案 0 :(得分:2)

如果aspnet_Roles实体上的aspnet_User是集合导航属性而SourceRoleNameaspnet_Role实体的映射属性,则必须将其重写为:

var q = (from m in context.aspnet_Users
         where m.UserName.Equals(username)
         select new 
             { 
                 m, 
                 m.aspnet_Roles.Select(r => r.SourceRoleName) 
             })
        .FirstOrDefault();

如果您的SourceRoleNameaspnet_Role实体中的计算属性(.NET代码中的自定义属性),则无法在linq-to-entities查询中使用它。您必须选择整个aspnet_Role实体,然后访问其计算属性。