0
我有兩個看起來完全一樣的函數,除了它們創建兩個不同對象的列表。這兩個不同的對象看起來非常相似,但是當我嘗試運行其中一個對象的某個函數時,出現錯誤消息:「實體或複雜類型無法在LINQ to Entities查詢中構造」。有人能以非常簡單的方式向我解釋發生了什麼嗎?另外,你能告訴我如何改變我的代碼,使其工作?謝謝,艾倫。實體或複雜類型不能在LINQ to Entities查詢中構建
功能1(作品):
public static List<ChartApp> ListChartApplications()
{
using (var db = new LatencyDBContext())
{
var appNames = db.LoginApplications.Select(item => new ChartApp()
{
LoginApplicationID = item.LoginApplicationID,
LoginAppName = item.LoginAppName,
}).OrderBy(item => item.LoginAppName);
return appNames.ToList();
}
}
功能2(拋出的 「返回appNames.ToList();」 的錯誤):
public static List<LoginApplication> ListApplications()
{
using (var db = new LatencyDBContext())
{
var appNames = db.LoginApplications.Select(item => new LoginApplication()
{
LoginApplicationID = item.LoginApplicationID,
LoginAppName = item.LoginAppName,
}).OrderBy(item => item.LoginAppName);
return appNames.ToList();
}
}
類:
public class ChartApp
{
public ChartApp()
{
this.LoginHistories = new List<ChartHist>();
}
public int? LoginApplicationID { get; set; }
public string LoginAppName { get; set; }
public virtual ICollection<ChartHist> LoginHistories { get; set; }
public int Step { get; set; }
}
public class LoginApplication
{
public LoginApplication()
{
this.LoginHistories = new List<LoginHistory>();
}
public int LoginApplicationID { get; set; }
public string LoginAppName { get; set; }
public virtual ICollection<LoginHistory> LoginHistories { get; set; }
}
編輯:可能的差異可能是其中一個對象映射到數據庫?
public class LoginApplicationMap : EntityTypeConfiguration<LoginApplication>
{
public LoginApplicationMap()
{
// Primary Key
this.HasKey(t => t.LoginApplicationID);
// Properties
this.Property(t => t.LoginAppName)
.HasMaxLength(500);
// Table & Column Mappings
this.ToTable("LoginApplication");
this.Property(t => t.LoginApplicationID).HasColumnName("LoginApplicationID");
this.Property(t => t.LoginAppName).HasColumnName("LoginAppName");
}
}
其中一個類是映射實體,而另一個不是?看看這個問題:http://stackoverflow.com/questions/5325797/the-entity-cannot-be-constructed-in-a-linq-to-entities-query/5325861#5325861 – Yakimych 2013-02-15 20:08:14
是的,一個映射另一個則不是。我會看看你的鏈接。 – ADH 2013-02-15 20:45:08
好的,這解釋了錯誤。那麼,修復錯誤的最佳方法是什麼?我怎樣才能改變我的功能,不再拋出錯誤呢? – ADH 2013-02-15 20:50:44