Я использую платформу .NET 3,5 SP1.
После добавления столбца к одной таблице в SQL-сервере (а также изменение существующего столбца от разрешения аннулирует к не nullable), я больше не могу выполнять свой проект, не получая эту ошибку:
Число членов в концептуальном типе 'XBRLDimensionalModel.axis_t' не соответствует числу членов на объектном типе стороны 'EOL.Xbrl. Персистентность. Данные axis_t'. Удостоверьтесь, что число членов является тем же.
Я бросил пытаться найти и зафиксировать сгенерированный код. Я теперь удалил все свои локальные связанные с объектом файлы и повторно создал их путем запуска с нуля и добавления нового объекта (Модель данных Объекта ADO.NET). Я все еще получаю эту ошибку.
Единственным путем я могу работать, проект теперь состоит в том, чтобы отменить все мои незаконченные изменения и использовать последнюю версию от управления исходным кодом и конечно изменить два измененных столбца базы данных на nullable.
От всего я читал до сих пор, кажется, что я просто должен был быть в состоянии "обновить" свою модель от базы данных. Это привело к этому исключению (выше). Но теперь я полностью смущен, что даже с полной регенерацией модели объекта и классов поддержки я все еще получаю ту ошибку.
Я изменил свойство на своей edmx модели: "Обработка Артефакта метаданных" для "Копирования для Вывода Каталога". Designer.cs, csdl, ракета, ssdl файлы все, кажется, согласовываются с последними изменениями DB.
Исключение выдается в первый раз, когда на мой entityModel экземпляр ссылаются. Таким образом, это до любой загрузки или сохранения данных из измененной таблицы.
какие-либо идеи, где я иду не так, как надо? Спасибо, TG
select
a, b, c
from (
select
a, b, c,
case
when a=1 then 5
when a=2 then 6
end as d
from some_table
) as t
where d=6
-121--2898864- Сделайте опубликованный запрос подзапросом и выберите из него, где d = 6. Насколько я знаю, нет пути ссылаться на производный столбец в том же запросе.
-121--2898867-Откройте модель в формате XML. Удалите все ссылки на этот тип из CSDL. Сохраните и закройте, а затем снова откройте графический интерфейс пользователя. Теперь вы должны иметь возможность обновлять модель в обычном режиме. Если это не сработает, сделайте то же самое, но удалите и из MSL.
Это кажется немного многолетним для комментариев, поэтому я добавляю это как другой ответ:
В ответе «Предложение Craig» я открыл файл EDMX в Viewer XML и удалил все ссылки на AXIS_T (включая ассоциации из-за иностранных ключей). От всего файла.
Я затем «обновил» модель, открыв файл EDMX в качестве интерфейса GUI, щелкнул щелкните правой кнопкой мыши | Обновить из базы данных | Добавить (вкладка), которая теперь только перечисляет таблицу AXIS_T. Я добавил таблицу, которая, казалось, работала нормально и включает в себя мою новую колонку, и столбец был сопоставлен правильно.
Я затем провел проект к тому же результату. Такая же ошибка, как опубликовано выше.
Теперь я вернулся к тому, что было в исходном управлении, а также изменение столбцов базы данных (новый и модифицированный) как оттудаваемый. Проект работает нормально. Я до сих пор не успешно не смогли реализовать новый столбец БД в EF. Он ведет себя так, как будто есть некоторая сохраненная / скомпилированная версия модели, которая не обновляется через процесс «Обновить».
При изменении внешнего ключа с допускающего значение NULL на значение, не допускающее значения NULL (или наоборот), обязательно измените кратность ассоциации с 0..1 на 1 (или наоборот). Дизайнер иногда пропускает это при обновлении из базы данных.