Это ложное предупреждение при использовании LINQ to SQL? - PullRequest
3 голосов
/ 01 февраля 2010

В соответствии со многими примерами LINQ, которые я видел, я создаю свой собственный контекст данных и таблицы, используя код, подобный приведенному ниже:

class MyDatabase : DataContext {
  public Table<Widget> Widgets;
  public Table<Car> Cars;

  public MyDatabase (string connection) : base(connection) { } 
}

Но для каждой таблицы (виджеты, автомобили и т. Д.) Я получаю предупреждение Поле 'TableName' никогда не назначается . Я не могу найти никого в Google, который также имеет эту проблему. Я не чувствую, что делаю что-то не так, потому что я просто копирую примеры LINQ, которые я видел в разных местах. Так что с этим предупреждением? Это предупреждает меня о реальной проблеме? Или я что-то упустил?

Ответы [ 3 ]

3 голосов
/ 01 февраля 2010

Да, они ложные. *

В этот другой вопрос о том, как DataContext работает , мы узнаем, что конструктор для DataContext использует отражение для заполнения полей во время выполнения. Таким образом, Visual Studio выдает предупреждение, основываясь на знаниях, которыми он обладает во время компиляции. Он не знает, что в конечном итоге эти поля заполняются до того, как они будут использованы.

* Ответ основан на чужом комментарии, найденном на SO. Может даже ошибаться!

0 голосов
/ 01 февраля 2010

Вы можете решить эту проблему, присвоив им значение null после объявления.

Ответ на комментарий - Это не обязательно должно быть в той же строке, что и объявление - просто где-нибудь после объявления и до его использования. Та же самая строка является обычной и часто используется для инициализаторов, что и нужно, и почему компилятор жалуется.

0 голосов
/ 01 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...