LINQ to SQL包含存储过程和用户​​定义的表类型参数

我在SQL Server 2008中使用LINQ to SQL和存储过程。除了一个问题,一切都很好。 L2S无法为用户定义的表类型作为参数生成存储过程的方法。 dbml设计面板中的方法签名使用对象作为参数类型而不是表类型,当我尝试编译时出现错误:

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

有办法解决这个问题吗? 我不想回到传统的ADO.NET数据访问。

我认为现在还没有什么可用 – 在SQL Server 2008中引入了表值参数 – 在LINQ和LINQ2SQL已经出局之后。

到目前为止,我还没有在任何关于支持.NET 4.0中LINQ2SQL中的表值参数的博文中找到任何提及。

更新:
这是Damien Guard关于.NET 4.0时间框架中Linq-to-SQL的修复和改进的博客文章 。

更新2:
不幸的是,根据Damien的说法,.NET 3.5不支持此function,.NET 4.0也不支持此function:-(

现在无法在3.5或4.0中完成
🙁 [)amien

我发现这篇post提供了一种用Linq2Sql调用TVP参数存储过程的方法。 它是一个round方法,基本上创建dataContext的部分类扩展,并使用SqlCommand传递dataTable。 我希望它有所帮助。

我有完全相同的问题,来自以下链接的Ryan Prechel的示例代码帮助我解决了这个问题。

如何从.net代码将表值参数传递给存储过程