Число членов в концептуальном типе не соответствует числу членов на объектном типе стороны

Я использую платформу .NET 3,5 SP1.

После добавления столбца к одной таблице в SQL-сервере (а также изменение существующего столбца от разрешения аннулирует к не nullable), я больше не могу выполнять свой проект, не получая эту ошибку:

Число членов в концептуальном типе 'XBRLDimensionalModel.axis_t' не соответствует числу членов на объектном типе стороны 'EOL.Xbrl. Персистентность. Данные axis_t'. Удостоверьтесь, что число членов является тем же.

Я бросил пытаться найти и зафиксировать сгенерированный код. Я теперь удалил все свои локальные связанные с объектом файлы и повторно создал их путем запуска с нуля и добавления нового объекта (Модель данных Объекта ADO.NET). Я все еще получаю эту ошибку.

Единственным путем я могу работать, проект теперь состоит в том, чтобы отменить все мои незаконченные изменения и использовать последнюю версию от управления исходным кодом и конечно изменить два измененных столбца базы данных на nullable.

От всего я читал до сих пор, кажется, что я просто должен был быть в состоянии "обновить" свою модель от базы данных. Это привело к этому исключению (выше). Но теперь я полностью смущен, что даже с полной регенерацией модели объекта и классов поддержки я все еще получаю ту ошибку.

Я изменил свойство на своей edmx модели: "Обработка Артефакта метаданных" для "Копирования для Вывода Каталога". Designer.cs, csdl, ракета, ssdl файлы все, кажется, согласовываются с последними изменениями DB.

Исключение выдается в первый раз, когда на мой entityModel экземпляр ссылаются. Таким образом, это до любой загрузки или сохранения данных из измененной таблицы.

какие-либо идеи, где я иду не так, как надо? Спасибо, TG

24
задан TG. 19 January 2010 в 21:31
поделиться

3 ответа

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.

8
ответ дан 28 November 2019 в 23:20
поделиться

Это кажется немного многолетним для комментариев, поэтому я добавляю это как другой ответ:

В ответе «Предложение Craig» я открыл файл EDMX в Viewer XML и удалил все ссылки на AXIS_T (включая ассоциации из-за иностранных ключей). От всего файла.

Я затем «обновил» модель, открыв файл EDMX в качестве интерфейса GUI, щелкнул щелкните правой кнопкой мыши | Обновить из базы данных | Добавить (вкладка), которая теперь только перечисляет таблицу AXIS_T. Я добавил таблицу, которая, казалось, работала нормально и включает в себя мою новую колонку, и столбец был сопоставлен правильно.

Я затем провел проект к тому же результату. Такая же ошибка, как опубликовано выше.

Теперь я вернулся к тому, что было в исходном управлении, а также изменение столбцов базы данных (новый и модифицированный) как оттудаваемый. Проект работает нормально. Я до сих пор не успешно не смогли реализовать новый столбец БД в EF. Он ведет себя так, как будто есть некоторая сохраненная / скомпилированная версия модели, которая не обновляется через процесс «Обновить».

1
ответ дан 28 November 2019 в 23:20
поделиться

При изменении внешнего ключа с допускающего значение NULL на значение, не допускающее значения NULL (или наоборот), обязательно измените кратность ассоциации с 0..1 на 1 (или наоборот). Дизайнер иногда пропускает это при обновлении из базы данных.

1
ответ дан 28 November 2019 в 23:20
поделиться
Другие вопросы по тегам:

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