Таблица EF для каждой иерархии (TPH) не сохраняется, поскольку невозможно вставить значение NULL в столбец "Дискриминатор"

У меня есть таблица, используемая для категории с несколькими типами, и она содержит столбец Discriminator с именем "ClassName", чтобы указать тип объекта для загрузки. Столбец ClassName не имеет значения NULL и имеет значение по умолчанию "Категория".

Моя проблема при сохранении нового элемента, я получаю сообщение об ошибке: "Невозможно вставить значение NULL в столбец ClassName" Таблица категории.

Я думал, что ef установит базу значений ClassName для нового класса объектов. Как я могу сохранить свой объект с правильным значением ClassName?

2 ответа

Решение

Я изменил свою структуру БД, чтобы принять ноль. EF установит нулевое значение, если имя объекта соответствует имени таблицы, и установит имя дискриминатора для производных классов.

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

Измените столбец в базе данных на ALLOW NULL (используя alter table) и обновите файл edmx, чтобы он обновил изменение (разрешить null)

Другие вопросы по тегам