我知道这里讨论的方法:
解决高需求 ASP.NET 网站的 Linq to Sql 中编译查询的常见问题
...但这不适用于我的情况,因为我得到了:
“从查询返回结果后,不允许设置加载选项。”
我正在使用 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?