- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
两者在性能上是否有很大差异,例如我有这两个代码片段:
public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
var insertGeofences = new List<Geofence>();
foreach(var geofence in geofences)
{
Geofence insertGeofence = new Geofence
{
name = geofence.Name,
radius = geofence.Meters,
latitude = geofence.Latitude,
longitude = geofence.Longitude,
custom_point_type_id = geofence.CategoryID
};
insertGeofences.Add(insertGeofence);
}
this.context.Geofences.InsertAllOnSubmit(insertGeofences);
this.context.SubmitChanges();
}
对比
public void Insert(IEnumerable<ManageGeofenceViewModel> geofences)
{
foreach(var geofence in geofences)
{
Geofence insertGeofence = new Geofence
{
name = geofence.Name,
radius = geofence.Meters,
latitude = geofence.Latitude,
longitude = geofence.Longitude,
custom_point_type_id = geofence.CategoryID
};
this.context.Geofences.InsertOnSubmit(insertGeofence);
}
this.context.SubmitChanges();
}
两者中哪一个更好,两个代码片段访问数据库的次数是否相同,因为在第一个片段中 submitchanges 是在循环外调用的?
最佳答案
完全没有区别,InsertAllOnSubmit实际上调用了InsertOnSubmit,这里是InsertAllSubmit的代码:
public void InsertAllOnSubmit<TSubEntity>(IEnumerable<TSubEntity> entities) where TSubEntity : TEntity
{
if (entities == null)
{
throw Error.ArgumentNull("entities");
}
this.CheckReadOnly();
this.context.CheckNotInSubmitChanges();
this.context.VerifyTrackingEnabled();
List<TSubEntity> list = entities.ToList<TSubEntity>();
using (List<TSubEntity>.Enumerator enumerator = list.GetEnumerator())
{
while (enumerator.MoveNext())
{
TEntity entity = (TEntity)((object)enumerator.Current);
this.InsertOnSubmit(entity);
}
}
}
如您所见,InsertAllOnSubmit 只是一个方便的 InsertOnSubmit 包装器
关于c# - Linq to SQL、InsertOnSubmit 与 InsertAllOnSubmit 性能对比?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17209893/
创建新对象 (Foo) 后,我为 EntityRef 关联属性 (Bar) 设置键 (BarId)。然后我想将新对象插入数据库,然后能够访问延迟加载的子对象。 不幸的是,延迟加载属性在调用 Inser
LINQ to SQL - 当插入一行(以及其他几行 FK 将指向该行上的 PK)时,执行 [context].[MainTable].InsertOnSubmit(row) 是否足够,或者我是否其他
在使用 SubmitChanges() 之前使用 InsertOnSubmit() 函数插入行时,有没有一种方法可以检查数据库的约束? 原因,我正在循环从 csv 文件生成的数据表。我一次插入 1 行
我是 Entity Framework 的新手,我认为我在这里误解了一些东西。 我试图在表中插入一行,在我找到代码示例的任何地方,他们都调用方法 InsertOnSubmit(),但问题是我在任何地方
我有一个映射到数据库表的对象模型。更新查询现在看起来像这样: public MyObjectModel CreateNewRecord(MyObjectModel TheNewObject) {
我对 LinqToSql 有一个相当烦人的问题。我创建了一个派生自 DataContext 中的类的类。 问题是一旦我使用“InsertOnSubmit(this);”在这个派生类上我得到一个 Nul
我正在进行大量导入,并且只对 1,000 条记录执行 .SubmitChanges()。 例子: var targetRecord = new Data.User() { FirstName = so
我确实查看了相关的帖子,但在 InsertOnSubmit() 中仍然出现 NullReference 异常。 我有一个自动生成的 LINQ 类事务,我从中创建了一个派生类来覆盖 ToString()
与How to debug a linq to sql InsertOnSubmit statement?相关 我执行以下代码: db.DBUsers.InsertOnSubmit(new DBUse
正在编辑其他人的代码,想知道在使用 for 循环和 InsertOnSubmit 时,submitchanges 调用是在循环内还是在循环外。 即: foreach (string t in newT
我有以下代码: public static bool Update(UserExtendedData data, byte[] image) { data
例如,我有一个名为 Product 的列表,它有 3 列,ProductName(即标题)、ProductPrice 和 ProductType。 ProductName 是一个字符串 Product
我尝试使用 Linq 将记录插入到表中,但出现了可怕的无法使用已在使用的 key 添加实体错误 'If the same data exists for the same patient in a r
我试图理解这两者之间的区别,并且真的需要一个简单的解释性示例。 提前致谢.. 最佳答案 有一个 good Q&A关于这个在 MSDN 论坛上。最有趣的一点: InsertAllOnSubmit() s
我知道有一个 question标题基本相同,但在我的情况下有所不同。我从 Linq-to-SQL 转移到 Entity Framework(我对它有点陌生)并且我有一个使用 InsertOnSubmi
以下代码已准备就绪。 db.DBUsers.InsertOnSubmit(new DBUser { AllTheStuff = valuesBeyondYourWildestD
假设我有: using (SomeDataContext db = new SomeDataContext()) { foreach(Item i in Items) {
当 SubmitChanges 失败时,我无法撤消失败的 InsertOnSubmit。代码如下: Dim NewFac As New t_Facility With
我目前正在我的数据访问类上创建一个方法,它将把一个实体对象插入到数据库中,我希望之后能得到最新插入的 ID……我已经做到了,但后来我想知道如果该方法以某种方式同时被调用两次会发生什么,它会返回错误的
插入新子记录的最佳方法是什么:使用 Add() 或 InsertOnSubmit()?这些方法之间有什么区别吗? InsertOnSubmit() 示例: using (DataContext db
我是一名优秀的程序员,十分优秀!