Допустим, у меня есть 4 класса:
public class Component {}
public class SubComponent1 : Component {}
public class SubComponent2 : Component {}
public class Container : Component {
public List<Component> components { get; set;}
}
И я не хочу хранить SubComponent2 в базе данных. Я хочу использовать его во всем приложении как обычный POCO, только хочу, чтобы его игнорировали при попытке сохранить в базу данных.
До сих пор я пытался поместить Ignore для этого в мой метод DbContext OnModelCreating:
dbModelBuilder.Ignore<SubComponent2>();
и затем попытался сохранить некоторую структуру, содержащую также SubComponent2, в базе данных, надеясь, что SubComponent2 будет просто проигнорирован и, следовательно, не сохранен.
Так что в основном что-то вроде:
var someContainer = new Container{ components = new List<Component>{
new SubComponent1(), new SubComponent2()
};
context.Containers.Add(someContainer);
и надеялся, что только Контейнер с SubComponent1 попадет в базу данных.
Вместо этого я получил
Не удалось найти информацию сопоставления и метаданных для EntityType 'SubComponent2'
Я знаю, что мог бы просто вручную удалить все SubComponent2-s, затем добавить Container в контекст, сохранить и затем каким-то образом заново присоединить SubComponent2-s, но это кажется слишком большой нагрузкой на большие структуры, когда я надеялся, что структура сущностей сможет решить это "для меня"
Знаете ли вы какой-нибудь хороший способ обойти это (возможно, некоторые изменения в настройке dbModelBuilder в моем DbContext)?