在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>
。
我该如何正确使用它?哪个版本更好?
答案 0 :(得分:1)
这是一种便捷方法,允许您在一次调用中插入多个实体。这样可以节省foreach
循环。它不会改变访问数据库的方式,但根据反编译代码(微小的影响)可能会降低CPU效率。
存在泛型类型参数,以便在实体处于继承关系时可以传递派生类型。从C#协方差支持开始,不再需要它。
在什么情况下应该使用哪一个?
如果您有实体列表,请使用列表版本。否则,请使用单项版本。不要指定泛型类型参数。它永远不需要,只会使代码混乱。
没有任何功能差异。如果它编译它的工作原理。只需省略type参数,编译器就会适当地填充它。