Пожалуйста, скажите мне, является ли это подходящим подходом к удалению Entity без извлечения, учитывая, что у меня есть ID.
У меня есть универсальное хранилище со следующим интерфейсом (я покажу только Delete):
public interface IStore : IReadOnlyStore
{
void Delete<TEntity>(TEntity entity) where TEntity : class, IEntity, new();
void SaveChanges();
}
И в конкретном классе Store этого интерфейса вот мой метод удаления:
public void Delete<TEntity>(TEntity entity) where TEntity : class, IEntity, new()
{
var obj = Ctx.Entry(entity);
if (obj.State == System.Data.EntityState.Detached)
{
Ctx.Set(typeof(TEntity)).Attach(obj.Entity);
}
Ctx.Set(typeof(TEntity)).Remove(obj.Entity);
}
Я тестировал оба, создавая Entity :
Store.Delete(new Foo() { Id = request.Entity.Id });
, а также получение объекта с последующим вызовом удаления.
Благодаря отладке я добился желаемого эффекта в обоих сценариях.
Я просто хочу убедиться, что это хороший дизайн и что у этого подхода нет побочных эффектов.
Для справки, Ctx - это просто сам DbContext.
Спасибо.