c# - LINQ TO SQL 我在这里遗漏了一些明显的东西吗?

标签 c# .net linq linq-to-sql

我有这个方法,将从 WCF 客户端调用它,但为了我的测试,我正在使用本地“添加项目引用”。我收到的错误是在处理后无法调用 DataContext。

    public IEnumerable<Server> GetServers()
    {
        // initialze to null
        ServersDataContext sdc = null;

        try
        {
            // get connected
            using (sdc = GetDataContext())
            {
                // disable this deferred loading
                sdc.DeferredLoadingEnabled = false;

                var relations = from svr in sdc.Servers; // complex linq here

                // return
                return relations;
            }
        }
        catch (Exception ex)
        {
            LogError(ex, "fwizs.Internal");
            throw;
        }
        finally
        {
            if (sdc != null)
            {
                sdc.Dispose();
            }
        }
    }

下面是我如何使用该方法,它给出了这个错误:“无法访问已处置的对象。”

    if (da.GetServers()
        .Select(sv => sv.ServerID == s.ServerID).Count() == 0)
    {

        // do work since we found it
    }

在此返回的 IEnumerable 对象上使用 .Select() 方法尝试返回到数据库以进行选择。在为 WCF 序列化后,我认为这不会成为问题,但我希望我的本地测试能够正常工作。

最佳答案

在方法中具体化您的查询,以确保在处理数据上下文之前实际执行数据库调用。

var relations = from svr in sdc.Servers;

return relations.ToList();

关于c# - LINQ TO SQL 我在这里遗漏了一些明显的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1639726/

相关文章:

c# - Azure 机器学习 Web 服务不使用传递的 .ilearn 模型

c# - 如何对Azure存储表进行批量操作?

c# - PetaPoco.Database 实现了 IDisposable,那么为什么大多数示例没有 'using' 语句?

c# - 无法在调试中创建 DataCacheFactory 实例

.net - 在 .NET 项目中引用 32 位和 64 位 dll,然后单击一次

c# - XDocument.Load() 在 DTD header 中引入空的 InternalSubset

c# - 如何从符号 (.pdb) 文件中确定 C# 方法的文件和行号?

c# - 对列表求和,但仅针对某个点之后的值

c# - 获取数组中的特定元素

c# - 如何在 foreach 循环中使用两个变量?