InsertAllOnSubmit<TSubEntity> 什么时候使用?

InsertAllOnSubmit<TSubEntity> when to use?

在 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();

对比像这样使用它:

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

条目是 List<SlickTableEntry>

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

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

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

Which one should be used in what situation?

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

在功能上没有任何区别。如果编译成功。只需省略类型参数,编译器就会适当地填充它。