То, когда сделает DataContext, откроет соединение с DB?

JPEG не имеет формального определения заголовка, но у них действительно есть небольшое количество метаданных, которые можно использовать.

  • Смещение 0 (Два байта): маркер SOI JPEG (шестнадцатеричное число FFD8)
  • Смещение 2 (Два байта): Ширина изображения в пикселях
  • Смещение 4 (Два байта): Высота изображения в пикселях
  • Смещение 6 (Байт): Количество компонентов (1 = шкала полутонов, 3 = RGB)

существует пара других вещей после этого, но те не важны.

можно открыть файл с помощью двоичного потока, и считать это исходные данные и удостовериться, что OffSet 0 0, и OffSet 6 или 1,2 или 3.

, Который, по крайней мере, дал бы Вам немного больше точности.

Или можно просто захватить исключение и идти дальше, но я думал, что Вы хотели проблему:)

6
задан teedyay 12 March 2010 в 10:56
поделиться

3 ответа

A connection is made when you actually start enumerating and when you hit SubmitChanges (if there are changes to be made). I'm not sure if in the above code only ONE connection is opened and used, but I know in those two places I mentioned, you will invoke a connection.

You need to start looking into LinqPad and how to use it over at dimecasts. Also check out their series on the Delayed Execution features of Linq 2 Sql

Note, something like this (getTenSomethingElse(s,s,s)) does not query the db, at least not until you start enumerating over the return value

partial class MyDataContext
{
    // builds the tree to pull data from the db that matches a criteriea and pass it a ctor of another class
    public System.Linq.IQueryable<SomethingElse> getSomethingElse(string searchTerm, string searchValue, string orderBy)
    {
        var items = 
            from s in 
            this.Somethings 
            select new SomethingElse(s);

        return items.Where(searchTerm, searchValue).OrderBy(orderBy);
    }

    // calls the above method but adds take 10 to that tree
    public System.Linq.IQueryable<SomethingElse> getTenSomethingElse(string searchTerm, string searchValue, string orderBy)
    {
        var items = 
            from s in 
            this.getSomethingElse(searchTerm, searchValue, orderBy) 
            select s;

        return items.Take(10);
    }
}

IDK about you but I consider that to be fairly awesome considering all the work thats being done.

Oh btw, more info on that "Where(s,s)" extension can be found on ScottGu's awesome blog

3
ответ дан 17 December 2019 в 04:49
поделиться

Не знаю о внутреннем устройстве LINQ to SQL, но здравый смысл подсказывает, что соединения с базой данных нужно открывать как можно меньше времени, поэтому разумно ожидать, что SubmitChanges откроет соединение, сделает это. он работает, а затем закрывает соединение.

В любом случае обратите внимание, что вы можете иметь доступ к объекту DbConnection, используемому DataContext. Возможно, если вы откроете соединение вручную, DataContext не закроет его после завершения SubmitChanges (просто догадываюсь, никогда не пробовал).

0
ответ дан 17 December 2019 в 04:49
поделиться

LINQ to SQL подходит вам: он открывает и закрывает соединение с базой данных в SubmitChanges ().

Кроме того, если вы вставляете более одной записи, вставки будут содержаться в одна транзакция, так что либо все они успешны, либо все терпят неудачу.

В случае foreach (var obj in dc.SomeTable.AsEnumerable ()) , соединение с базой данных открывается и закрывается - просто один раз, в течение которого извлекаются все записи.

2
ответ дан 17 December 2019 в 04:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: