据我所知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:这里有任何陷阱吗?如果它如此容易,那么微软会自己实现......
问题2:为什么没有开箱即用?
答案 0 :(得分:0)
看一下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);
}
}
所以,我会说:你的实施很好。
顺便说一句:ForEach
没有IEnumerable<T>
扩展方法。
答案 1 :(得分:0)
或者你可以实现某些效果......
public static void DeleteAllOnSubmit<T>(this ITable<T> table, IEnumerable<T> entities)
{
table.Context.GetTable<T>().DeleteAllOnSubmit(entities);
}
只需浏览ITable<T>
到特定于上下文的表并调用其DeleteAllOnSubmit()
即可。这样,您枚举和删除所有内容的方式以及上下文本身的方式都没有偏差。