Передача таблицы в метод Entity
У меня есть класс моей базы KISATPEntities. И три поля типа DbSet - мои таблицы. Я хочу написать универсальный метод удаления записи из таблицы. В метод буду передавать id записи и непосредственно таблицу, запись в которой нужно удалить. Совсем уже не знаю как это реализовать и как передать эту таблицу в качестве параметра, перепробовал кучу вариантов.
Ответы (2 шт):
Автор решения: Alexander Petrov
→ Ссылка
Могу предложить следующее.
public void Delete<T>(T entity) where T : class
{
using var db = new KISATPEntities();
db.Remove(entity);
db.SaveChanges();
}
Что именно вы пытаетесь удалить, вам должно быть известно. Например, это тип Profession. У вас есть айдишник. Создаём экземпляр этой сущности и передаём в наш метод.
var profession = new Profession { Id = id };
Delete(profession);
При этом перед удалением не нужно предварительно запрашивать сущность из БД.
Автор решения: Faothin
→ Ссылка
public void Delete<TEntity>(TEntity entity)
where TEntity : class
{
// Настройки контекста
SampleContext context = new SampleContext();
context.Database.Log = (s => System.Diagnostics.Debug.WriteLine(s));
context.Entry<TEntity>(entity).State = EntityState.Deleted;
context.SaveChanges();
}
Profession prof = new Profession(){id = 5};
Delete(prof);

