0

这里是我的代码:问题在许多一对多在.NET实体模型框架关系

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框架删除了接口表并且生成了与表映射关联,这是多对多的关系。

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

回答

2

如果aspnet_Roles是您aspnet_User实体集合导航属性和SourceRoleName映射你的aspnet_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(); 

如果您SourceRoleName是计算财产在你aspnet_Role实体(自定义属性.NET代码),你不能在linq-to-entities查询中使用它。您必须选择整个aspnet_Role实体,然后访问其计算属性。