我遇到了一個奇怪的問題,使用CompiledQuery.Compile
。當試圖用一個查詢中的靜態只讀場,我得到了以下錯誤消息:LINQ-SQL - 在CompiledQuery.Compile中使用靜態只讀字段?
Class member X is unmapped
如果我移動領域decleration出部分類到不相關的LINQ-SQL另一個類,然後我得到以下內容:
Object reference not set to an instance of an object
如果我通過穿過田野作爲參數,然後我看不出有任何錯誤和查詢工作正常,併產生預期的SQL。
一個例子是如下:
partial class Order
{
public static readonly string Complete = "Complete";
public static readonly string Pending = "Pending";
public static readonly Func<DataContext, Order, bool> IsComplete =
CompiledQuery.Compile((DataContext context, Order o) =>
Complete == o.Status);
}
用法:
var test = from o in db.Orders
select new
{
IsComplete = Order.IsComplete(db, o)
};
這產生提到的錯誤。如果我添加一個string[]
作爲CompiledQuery
的另一個參數,那麼我看不到任何錯誤。另外,如果我將字符串修改爲const
而不是static readonly
,這也適用,但我想這是由於在編譯時分配了值。
有什麼辦法可以讓static readonly
字段工作嗎?
您是否嘗試使用'公共靜態只讀Func鍵 IsComplete = CompiledQuery.Compile((DataContext的上下文中,命令○)=> Order.Complete == o.Status);' –
剛剛嘗試過,它給出:'類成員Order.X未映射'。 – Mig
也許嘗試將所有三個字段改爲訪問器? 'public static string Complete {get {return「Complete」; }}'它是否給出了相同的結果? –