3

我有一个 WCF 服务,它的选择方法只需要一个 id。我需要使用几个(20 多个)加载选项来获取我需要返回的所有内容,所以我认为这会产生一个非常复杂的查询,并且编译它会是一个好主意。到目前为止,我发现的唯一方法是创建一个静态数据上下文并加载选项以用于已编译的查询。如果我不这样做,它会抱怨使用与编译时不同的上下文。所以这让我的问题是我应该这样做吗?在 Web 服务上使用静态数据上下文会导致问题吗?它只会用于这种方法。所有其他方法都创建自己的方法。我只是担心我最终可能会为这个决定付出代价,所以任何提示都会很棒!谢谢!

    private static DataLoadOptions loadOptions = GetDataLoadOpt();

    private static readonly Func<ItemsDataContext, int, Data.Item> SelectItem =
        CompiledQuery.Compile((ItemsDataContext DataContext, int ItemId) =>
            DataContext.Items.Where(r => r.ItemID == ItemId).FirstOrDefault());

    private static DataLoadOptions GetDataLoadOpt()
    {
        var loadOpts = new System.Data.Linq.DataLoadOptions();
        loadOpts.LoadWith<Data.Item>(d => d.ItemProp);
        .
        .
        .
        return loadOpts;
    }
4

1 回答 1

0

Web 服务调用是不同的。我还没有发现拥有一个共享的静态上下文可以节省任何时间,因为无论如何调用最终都会启动一个新实例。在我的一些项目中,我还有几个对象具有非常大、复杂的加载选项堆栈。在某些情况下,我的性能会有所下降,因为我要带回这么多表,但如果连接很强大(设计良好的数据库),那还不错。

于 2014-01-31T16:48:25.613 回答