InsertAllOnSubmit <tsubentity>何时使用?

时间:2016-03-25 15:35:57

标签: c# linq linq-to-sql

在LINQ to SQL中,我的理解是,当我想要插入一组对象时,我将使用InsertAllOnSubmit。我不明白的是,我何时需要使用InsertAllOnSubmit<T>而不是仅使用InsertOnSubmit

通用类型参数中的任何一个或相对有什么不同。

从LINQ定义,

public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities)
   where TSubEntity : TEntity;

像这样使用:

db.SlickTableEntries.InsertAllOnSubmit<SlickTableEntry>(entries);
db.SubmitChanges();

VS。像这样使用它:

db.SlickTableEntries.InsertAllOnSubmit(entries);
db.SubmitChanges();

条目是List<SlickTableEntry>

我该如何正确使用它?哪个版本更好?

1 个答案:

答案 0 :(得分:1)

这是一种便捷方法,允许您在一次调用中插入多个实体。这样可以节省foreach循环。它不会改变访问数据库的方式,但根据反编译代码(微小的影响)可能会降低CPU效率。

存在泛型类型参数,以便在实体处于继承关系时可以传递派生类型。从C#协方差支持开始,不再需要它。

  

在什么情况下应该使用哪一个?

如果您有实体列表,请使用列表版本。否则,请使用单项版本。不要指定泛型类型参数。它永远不需要,只会使代码混乱。

没有任何功能差异。如果它编译它的工作原理。只需省略type参数,编译器就会适当地填充它。