System.ArgumentNullException: значение не может быть нулевым. Имя параметра: entitySet от наследования - PullRequest
0 голосов
/ 20 июня 2019

У меня проблема с созданием миграций, при запуске Add-Migration консоль диспетчера пакетов выдавала исключение:

System.ArgumentNullException: Value cannot be null. Parameter name: entitySet

Очень ложная ошибка, которая была бы хорошаесли TableMappingGenerator выдал ошибку, какую сущность он пытался создать.

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

Я прошел через рассматриваемый текст данных, но не внес никаких изменений в какие-либо классы, подклассы или конфигурацию.

В конце концов, после создания новогоконтекст и добавление в один DbSet <> за раз я столкнулся с исключением.Рассматриваемая модель не была изменена, поэтому я удалил все объекты, добавляя по одному обратно за раз, пока не возникло исключение.

Свойство, которое вызывало проблему, было относительно простым MoneyModel, который выглядиткак это:

public class Money
{
    public Currency Currency { get; set; }

    public decimal Amount { get; set; }
}

Валюта является перечислением валют ISO.Странно было то, что модель не изменилась .

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

public class Cost : Money
{
    public CostType Type { get; set; }
}

В этом случае типом стоимости является перечисление.Эта модель успешно использовалась в другом контексте данных и была частью миграции.

Изменение моей модели модели на модель стоимости, исключило исключение и позволило мне построить миграцию.

Мой вопрос: почему это вообще сломало Add-Migration?Мы используем наследование в других моделях без каких-либо проблем.Обе модели общедоступны с конструкторами по умолчанию.Любой совет будет оценен.

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