Как удалить вложенный объект из абстрактного суперкласса в Entity Framework? - PullRequest
0 голосов
/ 29 ноября 2018

В Entity Framework, чтобы удалить объект, мы делаем это:

model delObj = new model { ID = id };
db.model.Attach(delObj);
db.model.Remove(delObj);
db.SaveChanges();

Прямо сейчас у меня есть проблема .. класс model на самом деле абстрактный класс и это фактическая таблица вбаза данных.

В C # я создал два подкласса, поэтому точно не знаю, какой подобъект должен быть удален, поскольку id назначается во время выполнения.

Приведенный выше кодбольше не работает, потому что модель абстрактна, и теперь я не могу сделать «объект из абстрактного класса»

Как удалить подчиненный объект, используя абстрактный класс?

1 Ответ

0 голосов
/ 29 ноября 2018

несколько возможных вариантов в зависимости от ваших требований:

1) получить объект перед удалением.Обратная сторона - дополнительный запрос, хотя не всегда плохо проверять, действительно ли вы что-то удаляете.

var found = db.model.first(x=>x.ID==id);
if (found != null) {    
db.Remove(found); 
db.SaveChangesAsync();    
}

2) Не делайте свой базовый класс Абстрактным.Я не знаю ваших причин сделать базовый класс абстрактным, но я подумаю, действительно ли он необходим.

3) Если вы уверены, что вам нужен абстрактный класс, и / или не хотитезапрос сначала используйте прямую команду SQL.

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