LINQ to SQL vs procedimientos almacenados? [cerrado]


Eché un vistazo a la publicación" Guía para principiantes de LINQ " aquí en StackOverflow ( Guía para principiantes de LINQ ), pero tuve una pregunta de seguimiento:

Estamos a punto de poner en marcha un nuevo proyecto donde casi todas las operaciones de nuestra base de datos serán recuperaciones de datos bastante simples (hay otro segmento del proyecto que ya escribe los datos). La mayoría de nuestros otros proyectos hasta este punto hacen uso de procedimientos almacenados para tales cosas. Sin embargo, me gustaría aprovechar LINQ-to-SQL si hace más sentido.

Entonces, la pregunta es la siguiente: Para recuperaciones simples de datos, ¿qué enfoque es mejor, LINQ-to-SQL o procs almacenados? ¿Algún pro o contra en concreto?

Gracias.

Author: Community, 2008-08-18

23 answers

Algunas ventajas de LINQ sobre sprocs:

  1. Tipo de seguridad : Creo que todos entendemos esto.
  2. Abstracción : Esto es especialmente cierto con LINQ-to-Entities. Esta abstracción también permite que el framework agregue mejoras adicionales que puede aprovechar fácilmente. PLINQ es un ejemplo de agregar soporte multi-threading a LINQ. Los cambios de código son mínimos para agregar este soporte. Sería mucho más difícil hacer este acceso a los datos código que simplemente llama sprocs.
  3. Soporte de depuración: Puedo usar cualquier depurador.NET para depurar las consultas. Con sprocs, no puede depurar fácilmente el SQL y esa experiencia está vinculada en gran medida a su proveedor de base de datos (MS SQL Server proporciona un analizador de consultas, pero a menudo eso no es suficiente).
  4. Independiente del proveedor: LINQ funciona con muchas bases de datos y el número de bases de datos soportadas solo aumentará. Sprocs no siempre son portátiles entre bases de datos, ya sea debido a sintaxis variable o soporte de características (si la base de datos soporta sprocs en absoluto).
  5. Deployment: Otros ya han mencionado esto, pero es más fácil implementar un solo ensamblado que implementar un conjunto de sprocs. Esto también se relaciona con el # 4.
  6. Más fácil: No tiene que aprender T-SQL para hacer acceso a datos, ni tiene que aprender la API de acceso a datos (p. ej. ADO.NET) necesario para llamar a los sprocs. Esto está relacionado con #3 y #4.

Algunas desventajas de LINQ vs sprocs:

  1. Tráfico de red: sprocs solo necesita serializar los datos de nombre y argumento de sproc a través del cable mientras LINQ envía la consulta completa. Esto puede ser muy malo si las consultas son muy complejas. Sin embargo, la abstracción de LINQ permite a Microsoft mejorar esto con el tiempo.
  2. Menos flexible: los Sprocs pueden aprovechar al máximo el conjunto de características de una base de datos. LINQ tiende a ser más genérico en su soporte. Esto es común en cualquier tipo de abstracción del lenguaje (por ejemplo, C# vs montador).
  3. Recompilando: Si necesita hacer cambios en la forma en que accede a los datos, necesita recompilar, versionar y redistribuir su ensamblado. Los Sprocs pueden a veces permitir que un DBA afine la rutina de acceso a datos sin necesidad de volver a implementar nada.

La seguridad y la capacidad de administración son algo sobre lo que la gente discute también.

  1. Seguridad: Por ejemplo, puede proteger sus datos confidenciales restringiendo el acceso a las tablas directamente, y poner ACLs en los sprocs. Con LINQ, sin embargo, todavía puede restringir el acceso directo a las tablas y, en su lugar, poner ACL en vistas de tabla actualizable para lograr un fin similar (suponiendo que su base de datos admita vistas actualizables).
  2. Manejabilidad: El uso de vistas también le da la ventaja de proteger su aplicación sin romper con los cambios de esquema (como la normalización de tablas). Puede actualizar la vista sin requerir su código de acceso a los datos para cambio.

Solía ser un gran tipo de sproc, pero estoy empezando a inclinarme hacia LINQ como una mejor alternativa en general. Si hay algunas áreas donde los sprocs son claramente mejores, entonces probablemente todavía escribiré un sproc pero accederé a él usando LINQ. :)

 181
Author: Chris Gillum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-26 20:04:51

Generalmente soy un defensor de poner todo en procedimientos almacenados, por todas las razones por las que los DBA han estado insistiendo durante años. En el caso de Linq, es cierto que no habrá diferencia de rendimiento con consultas CRUD simples.

Pero tenga en cuenta algunas cosas al tomar esta decisión: usar cualquier couples lo empareja estrechamente con su modelo de datos. Un DBA no tiene libertad para realizar cambios en el modelo de datos sin obligarle a cambiar su código compilado. Con los procedimientos almacenados, usted puede ocultar este tipo de cambios en cierta medida, ya que la lista de parámetros y el conjunto de resultados devueltos por un procedimiento representan su contrato, y las entrañas se pueden cambiar, siempre y cuando ese contrato todavía se cumpla.

Y también, si Linq se utiliza para consultas más complejas, ajustar la base de datos se convierte en una tarea mucho más difícil. Cuando un procedimiento almacenado se está ejecutando lento, el DBA puede centrarse totalmente en el código de forma aislada, y tiene muchas opciones, solo para que el contrato esté todavía satisfecho cuando haya terminado.

He visto muchos, muchos casos en los que los problemas graves en una aplicación se solucionaron mediante cambios en el esquema y el código en los procedimientos almacenados sin ningún cambio en el código implementado y compilado.

Tal vez un enfoque hybird sería bueno con Linq? Linq puede, por supuesto, usarse para llamar a procedimientos almacenados.

 73
Author: Eric Z Beard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-10 15:40:11

Linq a Sql.

Sql server almacenará en caché los planes de consulta, por lo que no hay ganancia de rendimiento para sprocs.

Sus sentencias linq, por otro lado, serán lógicamente parte de y probadas con su aplicación. Los Sprocs siempre están un poco separados y son más difíciles de mantener y probar.

Si estuviera trabajando en una nueva aplicación desde cero ahora mismo solo usaría Linq, sin sprocs.

 64
Author: Keith,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 12:46:04

Para la recuperación de datos básicos, iría por Linq sin dudarlo.

Desde que me mudé a Linq he encontrado las siguientes ventajas:

  1. Depurar mi DAL nunca ha sido tan fácil.
  2. La seguridad del tiempo de compilación cuando cambia su esquema no tiene precio.
  3. La implementación es más fácil porque todo está compilado en DLL. No más administración de scripts de implementación.
  4. Debido a que Linq puede admitir consultas sobre cualquier cosa que implemente la interfaz IQueryable, podrá utilice la misma sintaxis para consultar XML, Objetos y cualquier otra fuente de datos sin tener que aprender una nueva sintaxis
 37
Author: lomaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 13:08:31

LINQ hinchará la caché del procedimiento

Si una aplicación está usando LINQ para SQL y las consultas implican el uso de cadenas que pueden ser muy variables en longitud, la caché del procedimiento SQL Server se inflará con una versión de la consulta para cada longitud de cadena posible. Por ejemplo, considere las siguientes consultas muy simples creadas contra la Persona.Tabla AddressTypes en la base de datos AdventureWorks2008:

var p = 
    from n in x.AddressTypes 
    where n.Name == "Billing" 
    select n;

var p = 
    from n in x.AddressTypes 
    where n.Name == "Main Office" 
    select n;

Si se ejecutan ambas consultas, veremos dos entradas en la caché de procedimientos de SQL Server: Una enlazada con un NVARCHAR(7), y la otra con un NVARCHAR(11). Ahora imagina si hubiera cientos o miles de cadenas de entrada diferentes, todas con diferentes longitudes. La caché de procedimientos se llenaría innecesariamente con todo tipo de planes diferentes para la misma consulta.

Más aquí: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=363290

 26
Author: SQLMenace,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-21 23:29:14

Creo que el argumento pro LINQ parece venir de personas que no tienen un historial con el desarrollo de bases de datos (en general).

Especialmente si se usa un producto como VS DB Pro o Team Suite, muchos de los argumentos presentados aquí no se aplican, por ejemplo:

Más difícil de mantener y probar: VS proporciona comprobación de sintaxis completa, comprobación de estilo, comprobación de referencias y restricciones y más. También proporciona capacidades completas de pruebas unitarias y herramientas de refactorización.

LINQ hace realidad prueba unitaria imposible ya que (en mi mente) falla la prueba ÁCIDA.

La depuración es más fácil en LINQ: ¿Por qué? VS permite un paso completo desde el código administrado y la depuración regular de SPs.

Compilado en una sola DLL en lugar de scripts de implementación: Una vez más, VS viene al rescate donde puede crear e implementar bases de datos completas o realizar cambios incrementales seguros para los datos.

No tiene que aprender TSQL con LINQ: No, no lo sabes, pero tienes que aprender LINQ - ¿dónde está el beneficio?

Realmente no veo esto como un beneficio. Ser capaz de cambiar algo de forma aislada puede sonar bien en teoría, pero solo porque los cambios cumplan con un contrato no significa que esté devolviendo los resultados correctos. Para poder determinar cuáles son los resultados correctos necesita contexto y obtiene ese contexto del código de llamada.

Um, aplicaciones poco acopladas son el objetivo final de todos los buenos programadores, ya que realmente aumentan la flexibilidad. Ser capaz de cambiar las cosas en el aislamiento es fantástico, y son sus pruebas unitarias las que asegurarán que todavía está devolviendo resultados apropiados.

Antes de que todos se molesten, creo que LINQ tiene su lugar y tiene un gran futuro. Pero para aplicaciones complejas y de uso intensivo de datos, no creo que esté listo para reemplazar los procedimientos almacenados. Este fue un punto de vista al que me había hecho eco un MVP en TechEd este año (permanecerán sin nombre).

EDITAR: El lado del Procedimiento Almacenado de LINQ a SQL es algo que todavía necesito leer más sobre-dependiendo de lo que encuentre puedo alterar mi diatriba anterior;)

 17
Author: Dr8k,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-09-12 04:42:23

LINQ es nuevo y tiene su lugar. LINQ no se inventa para reemplazar el procedimiento almacenado.

Aquí me centraré en algunos mitos y CONTRAS de rendimiento, solo para "LINQ to SQL", por supuesto que podría estar totalmente equivocado; -)

(1)La gente dice que el estado LINQ puede "almacenar en caché" en SQL server, por lo que no pierde rendimiento. Parcialmente cierto. "LINQ to SQL" en realidad es el tiempo de ejecución que traduce la sintaxis LINQ al estado TSQL. Así que desde la perspectiva del rendimiento, un código duro ADO.NET La sentencia SQL no tiene diferencia than LINQ.

(2)Dado un ejemplo, una interfaz de usuario de servicio al cliente tiene una función de "transferencia de cuenta". esta función puede actualizar tablas de 10 DB y devolver algunos mensajes de una sola vez. Con LINQ, debe construir un conjunto de instrucciones y enviarlas como un lote a SQL Server. el rendimiento de este lote LINQ->TSQL traducido difícilmente puede coincidir con el procedimiento almacenado. ¿Razón? porque puede modificar la unidad más pequeña de la instrucción en el procedue almacenado mediante el generador de perfiles SQL integrado y la ejecución herramienta de plan, no se puede hacer esto en LINQ.

El punto es, cuando se habla de una sola tabla DB y un pequeño conjunto de datos CRUD, LINQ es tan rápido como SP. Pero para una lógica mucho más complicada, el procedimiento almacenado es más modificable en el rendimiento.

(3)"LINQ to SQL" fácilmente hace que los novatos introduzcan cerdos de rendimiento. Cualquier tipo senior de TSQL puede decirle cuándo no usar CURSOR (Básicamente no debe usar CURSOR en TSQL en la mayoría de los casos). Con LINQ y el encantador bucle "foreach" con consulta, es tan fácil para un novato para escribir tal código:

foreach(Customer c in query)
{
  c.Country = "Wonder Land";
}
ctx.SubmitChanges();

Puedes ver que este código fácil y decente es muy atractivo. Pero bajo el capó,. NET runtime simplemente traduce esto a un lote de actualización. Si solo hay 500 líneas, esto es un lote TSQL de 500 líneas; Si hay millones de líneas, esto es un éxito. Por supuesto, el usuario experimentado no utilizará esta manera para hacer este trabajo, pero el punto es, es tan fácil caer de esta manera.

 17
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-12-03 05:40:53

El mejor código es no code, y con procedimientos almacenados tienes que escribir al menos algo de código en la base de datos y código en la aplicación para llamarlo , mientras que con LINQ to SQL o LINQ to Entities, no tienes que escribir ningún código adicional más allá de cualquier otra consulta LINQ aparte de instanciar un objeto context.

 12
Author: Mark Cidade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 12:45:13

LINQ definitivamente tiene su lugar en bases de datos específicas de aplicaciones y en pequeñas empresas.

Pero en una gran empresa, donde las bases de datos centrales sirven como un centro de datos comunes para muchas aplicaciones, necesitamos abstracción. Necesitamos administrar la seguridad de forma centralizada y mostrar historiales de acceso. Necesitamos poder hacer análisis de impacto: si hago un pequeño cambio en el modelo de datos para satisfacer una nueva necesidad empresarial, ¿qué consultas deben cambiarse y qué aplicaciones deben volver a probarse? Views and Los procedimientos almacenados me dan eso. Si LINQ puede hacer todo eso, y hacer que nuestros programadores sean más productivos, lo agradeceré welcome ¿alguien tiene experiencia usándolo en este tipo de entorno?

 10
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-09 14:43:53

Un DBA no tiene libertad para hacer cambios al modelo de datos sin forzarlo para cambiar su código compilado. Con procedimientos almacenados, puede ocultar estos cambios hasta cierto punto, ya que la lista de parámetros y el conjunto de resultados) devuelto de un procedimiento representar su contrato, y las entrañas pueden ser cambiado, siempre y cuando el contrato aún se cumple.

Realmente no veo esto como un beneficio. Ser capaz de cambiar algo de forma aislada puede sonar bien en teoría, pero solo porque los cambios cumplan con un contrato no significa que esté devolviendo los resultados correctos. Para poder determinar cuáles son los resultados correctos necesita contexto y obtiene ese contexto del código de llamada.

 8
Author: lomaxx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-19 14:28:23

EN mi humilde opinión, RAD = LINQ, RUP = Procs almacenados. Trabajé para una gran compañía de Fortune 500 durante muchos años, en muchos niveles, incluida la administración, y francamente, nunca contrataría desarrolladores de RUP para hacer el desarrollo de RAD. Están tan aislados que tienen un conocimiento muy limitado de qué hacer en otros niveles del proceso. Con un entorno en silos, tiene sentido dar a los DBA control sobre los datos a través de puntos de entrada muy específicos, porque otros francamente no conocen las mejores formas de lograr los datos gestión.

Pero las grandes empresas se mueven dolorosamente lentamente en la arena del desarrollo, y esto es extremadamente costoso. Hay momentos en los que necesitas moverte más rápido para ahorrar tiempo y dinero, y LINQ proporciona eso y más con creces.

A veces pienso que los DBA están sesgados en contra de LINQ porque sienten que amenaza su seguridad laboral. Pero esa es la naturaleza de la bestia, damas y caballeros.

 7
Author: Craig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-30 19:04:17

Creo que necesitas ir con procs para cualquier cosa real.

A) Escribir toda su lógica en linq significa que su base de datos es menos útil porque solo su aplicación puede consumirla.

B) De todos modos, no estoy convencido de que el modelado de objetos sea mejor que el modelado relacional.

C) Probar y desarrollar un procedimiento almacenado en SQL es mucho más rápido que un ciclo de edición de compilación en cualquier entorno de Visual Studio. Usted acaba de editar, F5 y pulse seleccionar y está fuera de la carrera.

D) Es más fácil administrar e implementar procedimientos almacenados que ensamblajes.. usted acaba de poner el archivo en el servidor, y pulse F5...

E) Linq to sql todavía escribe código de mierda en momentos en que no lo espera.

Honestamente, creo que lo último sería que MS aumentara t-sql para que pueda hacer una proyección de unión implicadamente de la manera en que lo hace linq. t-sql debería saber si quería hacer un pedido.lineitems.parte, por ejemplo.

 6
Author: Todd Bandrowsky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-08 16:35:56

LINQ no prohíbe el uso de procedimientos almacenados. He usado el modo mixto con LINQ-SQL y LINQ-storedproc . Personalmente, me alegro de no tener que escribir los procs almacenados....pwet-tu.

 5
Author: kenny,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-28 12:39:55

También existe el problema de una posible reversión 2.0. Créeme, me ha pasado un par de veces, así que estoy seguro de que le ha pasado a otros.

También estoy de acuerdo en que la abstracción es lo mejor. Junto con el hecho de que el propósito original de cualquier OR es hacer que los RDBMS coincidan muy bien con los conceptos de OO. Sin embargo, si todo funcionaba bien antes de LINQ al tener que desviarse un poco de los conceptos de OO, entonces al diablo. Los conceptos y la realidad no siempre encajan bien. No hay lugar para fanáticos militantes en ELLA.

 4
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-20 03:14:09

Asumo que te refieres a Linq Para Sql

Para cualquier comando CRUD es fácil perfilar el rendimiento de un procedimiento almacenado frente a cualquier tecnología. En este caso, cualquier diferencia entre los dos será insignificante. Prueba a crear perfiles para un objeto de campo de 5 (tipos simples) con más de 100.000 consultas select para averiguar si hay una diferencia real.

Por otro lado, el verdadero factor decisivo será la pregunta de si se siente cómodo poniendo su lógica de negocio en su base de datos o no, lo que es un argumento contra los procedimientos almacenados.

 3
Author: Jon Limjap,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-18 12:44:12

Según los gurús, defino LINQ como motocicleta y SP como automóvil. Si desea hacer un viaje corto y solo tiene pasajeros pequeños(en este caso 2), vaya con gracia con LINQ. Pero si quieres ir de viaje y tener una banda grande, creo que deberías elegir SP.

Como conclusión, elegir entre motocicleta o automóvil depende de su ruta (negocios), duración (tiempo) y pasajeros (datos).

Espero que ayude, puede que me equivoque. : D

 3
Author: Kyaw Thura,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-06-07 07:53:56

Todas estas respuestas que se inclinan hacia LINQ se refieren principalmente a la FACILIDAD de DESARROLLO que está más o menos conectada con la mala calidad de la codificación o la pereza en la codificación. Sólo soy así.

Algunas ventajas o Linq, leo aquí como , fácil de probar, fácil de depurar, etc, pero estos no están conectados a la salida final o al usuario final. Esto siempre va a causar el problema al usuario final en el rendimiento. ¿Cuál es el punto de carga de muchas cosas en la memoria y luego la aplicación de filtros en el uso de ¿LINQ?

De nuevo TypeSafety, es la precaución de que "tenemos cuidado de evitar el encasillamiento incorrecto" que de nuevo la mala calidad que estamos tratando de mejorar mediante el uso de linq. Incluso en ese caso, si algo en la base de datos cambia, por ejemplo, el tamaño de la columna de cadena, entonces linq necesita ser recompilado y no sería typesafe sin eso .. Lo intenté.

Aunque encontramos que es bueno, dulce, interesante, etc. mientras trabajamos con LINQ, tiene la desventaja de hacer que el desarrollador sea perezoso :) y se demuestra 1000 veces que es malo (puede ser peor) en el rendimiento en comparación con los Procs almacenados.

Deja de ser perezoso. Me estoy esforzando. :)

 3
Author: Manish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-25 21:36:30

Procs vs Código almacenado (Discusión anterior)

 2
Author: liammclennan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:31:02

Para operaciones CRUD simples con un solo punto de acceso a datos, diría que vaya por LINQ si se siente cómodo con la sintaxis. Para una lógica más complicada, creo que los sprocs son más eficientes en cuanto a rendimiento si eres bueno en T-SQL y sus operaciones más avanzadas. También tiene la ayuda de Tuning Advisor, SQL Server Profiler, depurar sus consultas de SSMS, etc.

 2
Author: Neo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-10 10:11:39

El procedimiento almacenado facilita las pruebas y puede cambiar la consulta sin tocar el código de la aplicación. También con linq, obtener datos no significa que sean los datos correctos. Y probar la corrección de los datos significa ejecutar la aplicación, pero con el procedimiento almacenado es fácil de probar sin tocar la aplicación.

 2
Author: dansasu11,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-24 09:38:09

El resultado puede resumirse como

LinqToSql para sitios pequeños y prototipos. Realmente ahorra tiempo para la creación de prototipos.

Sps : Universal. Puedo afinar mis consultas y siempre comprobar ActualExecutionPlan / EstimatedExecutionPlan.

 1
Author: pokrate,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-24 04:30:03
Create PROCEDURE userInfoProcedure
    -- Add the parameters for the stored procedure here
    @FirstName varchar,
    @LastName varchar
AS
BEGIN

    SET NOCOUNT ON;

    -- Insert statements for procedure here
    SELECT FirstName  , LastName,Age from UserInfo where FirstName=@FirstName
    and LastName=@FirstName
END
GO

Http://www.totaldotnet.com/Article/ShowArticle121_StoreProcBasic.aspx

 1
Author: totaldonet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-11-16 23:09:05

Tanto LINQ como SQL tienen sus lugares. Ambos tienen sus desventajas y ventajas.

A veces, para la recuperación de datos complejos, es posible que necesite procs almacenados. Y, a veces, es posible que desee que otras personas usen su proc almacenado en Sql Server Management Studio.

Linq to Entities es ideal para un rápido desarrollo de CRUD.

Seguro que puedes crear una aplicación usando solo una u otra. O puedes mezclarlo. Todo se reduce a sus necesidades. Pero los procs almacenados SQL no desaparecerán muy pronto.

 0
Author: live-love,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-12 15:34:50