这是我的代码:
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框架删除接口表并生成与多表对多的表映射关联。
我需要角色名称如何才能在这种模型中获得它?
答案 0 :(得分: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
实体,然后访问其计算属性。