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));
}