Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# InsertAllOnSubmit<;TSubEntity>;何时使用?_C#_Linq_Linq To Sql - Fatal编程技术网

C# InsertAllOnSubmit<;TSubEntity>;何时使用?

C# InsertAllOnSubmit<;TSubEntity>;何时使用?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,在LINQtoSQL中,我的理解是,当我想插入对象集合时,我将使用InsertAllOnSubmit。我不明白的是,我什么时候需要使用InsertAllOnSubmit,而不是只使用InsertOnSubmit 与泛型类型参数或有什么区别 根据LINQ的定义 public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity;

在LINQtoSQL中,我的理解是,当我想插入对象集合时,我将使用
InsertAllOnSubmit
。我不明白的是,我什么时候需要使用
InsertAllOnSubmit
,而不是只使用
InsertOnSubmit

与泛型类型参数或有什么区别

根据LINQ的定义

public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities)
   where TSubEntity : TEntity;
条目是一个
列表


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

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

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

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

如果有实体列表,请使用列表版本。否则,请使用单项目版本。不要指定泛型类型参数。它从来都不是必需的,只是把代码弄得乱七八糟


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

当列表中已有多个实体时,使用
InsertAllOnSubmit
更方便
db.SlickTableEntries.InsertAllOnSubmit<SlickTableEntry>(entries);
db.SubmitChanges();
db.SlickTableEntries.InsertAllOnSubmit(entries);
db.SubmitChanges();