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實體,然後訪問其計算屬性。