ITable <T>.DeleteAllOnSubmit () отсутствует? - PullRequest
1 голос
/ 11 марта 2011

Насколько я вижу, ITable<T> интерфейс не имеет DeleteAllOnSubmit() метода, который существует в ITable интерфейсе и Table<T> классе.

Я собираюсь реализовать самостоятельно что-то вроде этого:

public static void DeleteAllOnSubmit<T>(this ITable<T> table, IEnumerable<T> entities)
{
    entities.ForEach(entity=>table.DeleteOnSubmit(entity);
}

Вопрос 1: Есть ли здесь какие-нибудь подводные камни? Если бы это было так легко, Microsoft бы это реализовала ...

Вопрос 2: Почему это не было реализовано из коробки?

Ответы [ 2 ]

0 голосов
/ 11 марта 2011

В качестве альтернативы вы можете реализовать что-то с эффектом ..

public static void DeleteAllOnSubmit<T>(this ITable<T> table, IEnumerable<T> entities)
{
    table.Context.GetTable<T>().DeleteAllOnSubmit(entities);
}

Просто пройти через ITable<T> к контекстно-зависимой таблице и вызвать ее DeleteAllOnSubmit().Таким образом, нет никакого отклонения в том, как вы перечисляете и удаляете все, и как это происходит в исходном контексте.

0 голосов
/ 11 марта 2011

Взглянув на реализацию Table<TEntity>.DeleteAllOnSubmit<TSubEntity>(), вы увидите, что больше ничего не происходит:

public void DeleteAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity: TEntity
{
    if (entities == null)
    {
        throw Error.ArgumentNull("entities");
    }
    this.CheckReadOnly();
    this.context.CheckNotInSubmitChanges();
    this.context.VerifyTrackingEnabled();
    foreach (TEntity local in entities.ToList<TSubEntity>())
    {
        this.DeleteOnSubmit(local);
    }
}

Итак, я бы сказал: ваша реализация в порядке.Кстати: IEnumerable<T>.

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