私はここで議論されている方法について知っています:
需要の高いASP.NETWebサイトのLinqtoSqlでコンパイルされたクエリに関する一般的な問題を解決する
...しかし、これは私の状況では機能しません:
「クエリから結果が返された後は、ロードオプションを設定できません。」
Codesmith PLINQOスクリプトを使用してエンティティとマネージャーコードを生成していますが、マネージャーコードは次のようになります。
public partial class SearchManager
{
#region Query
// A private class for lazy loading static compiled queries.
private static partial class Query
{
internal static readonly Func<MyDataContext,IOrderedQueryable<Search>>
GetAll = CompiledQuery.Compile(
(MyDataContext db) =>
from s in db.Search
orderby s.Name
select s);
}
#endregion
public IQueryable<Search> GetAll()
{
return Query.GetAll(Context);
}
}
最初に、静的DataLoadOptionsを次のようにSearchmanagerクラスにドロップしてみました。
public static readonly DataLoadOptions MyOptions =
(new Func<DataLoadOptions>(() =>
{
var option = new DataLoadOptions();
option.LoadWith<Search>(x => x.Rule);
return option;
}))();
...次に、次のようにGetAllメソッドのコンテキストに提供します。
public IQueryable<Search> GetAll()
{
Context.LoadOptions = MyOptions;
return Query.GetAll(Context);
}
...そしてそれは私が上で述べたエラーを私に与えました。これは、クエリがすでにコンパイルされているため、「余分な」DataLoadOptionsを追加できないためですか?もしそうなら、クエリがコンパイルされる前に、どのようにDataLoadOptionsを適用することが可能でしょうか?