variable update linked into ejemplos ejemplo sql-server linq sql-server-2005 linq-to-sql

sql-server - update - select into variable sql server



Detenga LINQ to SQL para que ejecute select select después de insertar (3)

Estoy usando LINQ to SQL para actualizar mi base de datos. Estoy insertando muchos registros, y cuando invoco SubmitChanges (), LINQ to SQL ejecuta una inserción y una declaración de selección para cada objeto. Realmente no me importa actualizar mis objetos luego de que se hayan insertado en la base de datos.

¿Sabes que puedo evitar que LINQ to SQL emita las sentencias select después de las instrucciones de inserción? Esto debería hacer que mi aplicación sea mucho más rápida.


No puedo recordar la configuración ahora, pero en el diseñador, en las propiedades de una columna, tiene algunas configuraciones de "actualización".


Está buscando ColumnAttribute.AutoSync . Si está utilizando el diseñador, marque cada columna para una propiedad de sincronización automática y configúrelo en Nunca.

Editar: Ok, eso no funcionó para ti. ¡Prepárate para hackear mapas!

Cuando inserto con alguna columna de clave primaria autogenerada, obtengo este SQL:

INSERT INTO [dbo].[TableName]( fieldlist ) VALUES (@p0, @p1, @p2, @p3, @p4) SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]

Como entiendo su solicitud, no quiere que SELECCIONE

Intento 1: fui al campo de la clave primaria y establecí el autogenerado en falso. Esto provocó una excepción Sql "No se puede insertar un valor explícito para la columna de identidad en la tabla ''TableName'' cuando IDENTITY_INSERT está establecido en OFF." En otras palabras, linq especificó un valor para esa columna.

Intento 2: eliminé las columnas autogeneradas del diseñador. Esto causó que Linq me diera una Excepción de Operación Inválida: "No se puede realizar Crear, Actualizar o Eliminar operaciones en ''Tabla (TableName)'' porque no tiene clave primaria."

Intento 3: eliminé las columnas autogeneradas del diseñador, luego marqué otra columna como clave principal. Aunque esta columna no es una clave principal en la base de datos, DataContext de LINQ la usará para rastrear la identidad de la fila. Debe ser único para los registros observados de un DataContext dado.

Este tercer intento generó el siguiente SQL (que es lo que pides)

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


Tuve este problema con un proyecto una vez. Simplemente utilicé el contexto. Ejecutar comando ({cadena sql aquí.}). Esto fue para una inserción que estaba causando problemas de rendimiento. La solución más fácil, fácil de ver y mantener en lugar de cavar a través del modelo en mi opinión.