ADO.NET не может сгенерировать конструктор без параметров - PullRequest
1 голос
/ 20 мая 2011

Я создал модель ADO.NET под названием EF и добавил генератор DbContext, который заполняет мою папку / Model файлами EF.tt и .cs, по одному для каждой сущности.

в общем, система создает классы с конструкторами без параметров ... по какой-то причине я не могу понять, что у меня есть объект, которому не хватает этого конструктора. Это не абстрактный класс, не имеет базового типа и имеет открытый доступ. У меня есть тонны других таких классов, но у всех них есть конструкторы без параметров. Я погуглил и посмотрел вокруг VS, пытаясь понять, что особенного в этом и как я могу заставить его генерировать конструктор, но не нашел ответа.

Я всегда могу создать это в частичном определении, но я бы лучше понял это. Кроме того, если я щелкну правой кнопкой мыши по EF.tt, в меню появится меню «Запуск пользовательского инструмента», но при его выборе ничего не произойдет. Как восстановить файлы .cs?

p.s. да, я почистил и перестроил решение на случай, если оно только испортилось, но проблема все еще

Ответы [ 2 ]

3 голосов
/ 20 мая 2011

В C # (вы используете C #?):

  • Когда вы определяете без конструктора в вашем классе, конструктор без параметров будет создан компилятором по умолчанию
  • Когда вы определяете конструктор без параметров (и, возможно, некоторые другие), конструктор без параметров также будет присутствовать в том виде, в котором вы его определили
  • Когда вы определяете больше нуля конструкторов, но без параметров, компилятор делаетне создать конструктор без параметров для вас.В этом случае вы обязаны определить его (в неполном классе или нет).
1 голос
/ 20 мая 2011

Конструктор по умолчанию существует по умолчанию, он не генерируется. Если класс не имеет явно определенного конструктора, он всегда имеет конструктор по умолчанию без параметров. Если вы указали какой-либо конструктор в другом месте (частичный класс), конструктор по умолчанию без параметров больше не существует, и вы должны создать его самостоятельно, если хотите его использовать (EF всегда хочет его использовать).

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