2009-06-19 13 views
20

Estoy utilizando LINQ to SQL con procedimientos almacenados en SQL Server 2008. Todo funciona bien excepto un problema. L2S no puede generar el método para el procedimiento almacenado con el tipo de tabla definido por el usuario como parámetro. firma Método en dbml panel de diseño de objetos de uso tipo de parámetro en lugar del tipo de mesa y cuando traté de compilar llegué error:LINQ to SQL con procedimientos almacenados y el parámetro de tipo de tabla definido por el usuario

Error: DBML1005: Mapping between DbType 'Structured' and 
Type 'System.Object' in Parameter 'ParaName' of Function 'dbo.StoredProcName' 
is not supported. 

¿Hay una manera de solucionar este problema de esta? No quiero volver al acceso a datos tradicionales de ADO.NET.

Respuesta

16

No creo que haya nada disponible en este momento; los parámetros con valores de tabla se introdujeron en SQL Server 2008, después de que LINQ y LINQ2SQL ya estuvieran fuera.

No he encontrado ninguna mención en ninguna de las entradas del blog acerca del soporte para parámetros con valores de tabla en LINQ2SQL en .NET 4.0 hasta el momento.

ACTUALIZACIÓN:
He aquí una blog post by Damien Guard sobre las correcciones y mejoras para LINQ to SQL en el marco de tiempo .NET 4.0.

ACTUALIZACIÓN 2:
Desafortunadamente, de acuerdo con Damien, esta función no está soportada en .NET 3.5, y no se apoya en .NET 4.0 o bien :-(

No puede ser hecho en 3.5 o 4.0 en este momento
:([) amien

+0

¿Tiene alguna información sobre la nueva función (si lo hay) en L2S en .NET4.0? –

+0

Interesante. Hay una luz al final del túnel. LINQ to SQL está vivo. Estupendo. Gracias. –

+0

Esta respuesta me mata :(No, no es tu culpa marc_s :) ... un amigo y yo queremos hacer L2S + TVP hoy y llorar cuando pensamos que estábamos tan cerca de una solución asesina :) Volver a ole ADO .NET para esta pequeña parte de nuestras aplicaciones. –

4

me encontré con este post que proporciona un medio para llamar a procedimientos almacenados con parámetros TVP de Linq2Sql. es una rotonda método que, básicamente, crea una extensi clase parcial en su dataContext y pasa una dataTable usando un SqlCommand. Espero que ayude.

+0

¡Me ayudó! ¡Muchas gracias! – digaomatias

0

Tuve exactamente el mismo problema y el código de muestra de Ryan Prechel del siguiente enlace me ayudó a resolver el problema.

How to pass table value parameters to stored procedure from .net code

+1

Si bien esto puede responder teóricamente a la pregunta, [sería preferible] (// meta.stackoverflow.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. –

Cuestiones relacionadas