2016-01-23 73 views
0
public partial class User : IUser 
{ 
    public long ID {get; set;} 

    public BaseUser BaseUser 
    { 
     get 
     { 
      var context = new Factory().Create<ContextDB>(); 

      return context.Users.Find(this.ID); 
     } 
    } 
} 

LINQ to Entities不支持指定的類型成員。實體成員和實體導航

var result = _Context.Employees.Where(t => t.User.BaseUser.UserName.ToLower().Trim().Contains(searchKey)); 

在這裏,我得到一個例外:

指定的類型成員 'BaseUser' 在LINQ是不支持的實體。僅支持初始化程序,實體成員和實體導航屬性。

對此的任何解決方案?

回答

1

您已寫入Linq查詢。你正在與實體框架。所以,你正在使用Linq-To-EntityFramework

.Net將根據您正在使用的RDMS的類型將您的Linq查詢轉換爲數據庫查詢。 例如,讓我們這樣的代碼:

context.Users.Select(x => x.Id == 5); 

這將被翻譯成:

select * from User where Id=5; 

所以,這意味着.NET會拋出異常,如果它不能把它翻譯到數據庫查詢。例如,你的查詢。您已經在班級中創建了屬性。你是否樂意將它轉換爲數據庫查詢?怎麼樣?不可能!這是例外的原因。

此外,您的BaseUser屬性似乎不尋常的我。如果您已將所有設置正確,則BaseUser將與User相同。

相關問題