Первоначальное удаление кода Entity Framework по идентификатору без извлечения ( Общий стиль)

Пожалуйста, скажите мне, является ли это подходящим подходом к удалению 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.

Спасибо.

7
задан Forest 13 October 2011 в 15:18
поделиться