Передача таблицы в метод 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);
→ Ссылка