当前位置:  开发笔记 > 数据库 > 正文

在插入后停止LINQ to SQL执行select语句

如何解决《在插入后停止LINQtoSQL执行select语句》经验,为你挑选了1个好方法。

我正在使用LINQ to SQL来更新我的数据库.我正在插入大量记录,当我调用SubmitChanges()时,LINQ to SQL会为每个对象执行insert和select语句.在将对象插入数据库后,我并不在意更新它们.

你知道我可以阻止LINQ to SQL在insert语句之后发出select语句吗?这应该会让我的应用程序更快.



1> Amy B..:

您正在寻找ColumnAttribute.AutoSync.如果您正在使用设计器,请在每列中检查自动同步属性并将其设置为从不.

编辑: 好的,这不适合你.为一些映射hackery支撑自己!

当我插入一些自动生成的主键列时,我得到这个SQL:

INSERT INTO [dbo].[TableName]( fieldlist )
VALUES (@p0, @p1, @p2, @p3, @p4)

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]

据我了解您的要求,您不希望选择SELECT

尝试1:我转到主键字段并将auto-generated设置为false.这导致Sql异常"当IDENTITY_INSERT设置为OFF时,无法在表'TableName'中为标识列插入显式值." 换句话说,linq为该列指定了一个值.

尝试2:我从设计器中删除了自动生成的列.这导致Linq给我一个无效的操作异常:"无法对'Table(TableName)'执行创建,更新或删除操作,因为它没有主键."

尝试3:我从设计器中删除了自动生成的列,然后我将另一列标记为主键.尽管此列不是数据库中的主键,但LINQ的DataContext将使用它来跟踪行标识.对于给定DataContext的观察记录,它必须是唯一的.

第三次尝试生成以下SQL(这是您要求的)

INSERT INTO [dbo].[TableName]( fieldlist )
VALUES (@p0, @p1, @p2, @p3, @p4)


对于那些第一次使用ADO.Net工作正常的东西来说,这似乎是一项荒谬的工作.
推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有