c# - procedimientos - mapear stored procedure entity framework
LINQ to SQL con procedimientos almacenados y parĂ¡metro de tipo de tabla definido por el usuario (3)
Estoy usando 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. La firma del método en el panel de diseño de dbml usa el objeto para el tipo de parámetro en lugar del tipo de tabla y cuando intenté compilar recibí un error:
Error: DBML1005: Mapping between DbType ''Structured'' and
Type ''System.Object'' in Parameter ''ParaName'' of Function ''dbo.StoredProcName''
is not supported.
¿Hay alguna forma de solucionar este problema? No quiero volver al acceso a datos tradicionales de ADO.NET.
Me encontré con esta post que proporciona un medio para llamar a los procedimientos almacenados con los parámetros TVP de Linq2Sql. Es una ronda sobre el método que básicamente crea una extensión de clase parcial de su dataContext y pasa una tabla de datos usando un SqlCommand. Espero que ayude.
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 estaban disponibles.
No he encontrado ninguna mención en ninguna de las publicaciones del blog acerca de la compatibilidad con los parámetros con valores de tabla en LINQ2SQL en .NET 4.0 hasta el momento.
ACTUALIZAR:
Aquí hay una publicación de blog de Damien Guard sobre las correcciones y mejoras para Linq-to-SQL en el marco de tiempo de .NET 4.0.
ACTUALIZACIÓN 2:
Desafortunadamente, según Damien, esta característica no es compatible con .NET 3.5 y tampoco será compatible con .NET 4.0 :-(
No se puede hacer en 3.5 o 4.0 en este momento
:( [) amien
Tenía exactamente el mismo problema y el código de muestra de Ryan Prechel del siguiente enlace me ayudó a resolver el problema.
Cómo pasar los parámetros de valor de la tabla al procedimiento almacenado desde el código .net