Code First EF сохранить расширенную сущность >> Тип сущности xxx не является частью модели для текущего контекста

Я новичок в EF. Я расширил сущность новыми свойствами, необходимыми только в контроллере.
Когда я сохраняю сущность, мне больше не нужны свойства и upcasted до базовой сущности и пытался сохранить, но каждый раз получал ошибку:

Тип сущности XXX не является частью модели для текущего контекста.

Атрибут [NotMapped] не работал ни (на классе и / или собственности).

Как я могу просто выгнать и сохранить сущность?

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

1 ответ

@Devil, это распространяется только на "удручение" - мне нужно "поднимать настроение"!

Я написал конвертер. Я не мог поверить, что я должен это делать ", но теперь это работает просто отлично! Спасибо за вашу помощь!

public static T ConvertToBase<T>(Object extended) {
  if(extended == null) {
    throw new ArgumentException("Parameter extended was passed null!");
  }

  if(extended.GetType().BaseType != typeof(T)) {
    throw new ArgumentException($"Parameter extended does not inherit base type '{typeof(T).FullName}'");
  }

  PropertyInfo[] baseProperties = extended.GetType().BaseType.GetProperties();
  Object baseInstance = Activator.CreateInstance(extended.GetType().BaseType);

  foreach(PropertyInfo basePropertyInfo in baseProperties) {
    basePropertyInfo.SetValue(baseInstance, basePropertyInfo.GetValue(extended));
  }

  return (T)System.Convert.ChangeType(baseInstance, typeof(T));
}
Другие вопросы по тегам