LINQPad数据上下文的处理

时间:2018-09-20 07:36:06

标签: c# dispose linqpad

因此,在LINQPad中使用foreach()循环运行一些大型查询时,我遇到了一些OutOfMemory异常。我的一位同事(现在正在休假)建议我将using()放在foreach()内,以便每次循环时都创建一个新的表引用(并处置)。 。但是,我忘记了正确的方法,而且在Google上似乎找不到任何有用的东西。

示例:我有一个客户表,所以我的foreach()通常是这样的:

foreach(var customer in listOfCustomerIds) {
    var sum = Customer
        .FirstOrDefault(x => x.Id == customer)
        .Jobs
        .Where(x => x.Deleted == null)
        .Where(x => x.CustomerJobRelations.Any())
        .Sum(x => x.CustomerJobRelations.Count());
}

但是,正如我所说,这给了我一些OutOfMemory异常。相反,他希望我做这样的事情:

foreach(var customer in listOfCustomerIds) {
    using(var customerTable = new TypedDataContext<Customer>()) {
        var sum = customerTable
            .FirstOrDefault(x => x.Id == customer)
            .Jobs
            .Where(x => x.Deleted == null)
            .Where(x => x.CustomerJobRelations.Any())
            .Sum(x => x.CustomerJobRelations.Count());
    }
}

语法错误,但是我100%确信他使用了TypedDataContext。但是,他的设置方式却完全被人们遗忘了。有人知道吗?

0 个答案:

没有答案