У меня проблема с созданием миграций, при запуске 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
?Мы используем наследование в других моделях без каких-либо проблем.Обе модели общедоступны с конструкторами по умолчанию.Любой совет будет оценен.