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

23

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

Error: DBML1005: Mapping between DbType 'Structured' and
Type 'System.Object' in Parameter 'ParaName' of Function 'dbo.StoredProcName'
is not supported. 
有没有一种方法可以解决这个问题?我不想回到传统的 ADO.NET 数据访问方式。
有没有绕过此问题的方法?我不想返回传统的ADO.NET数据访问方式。
3个回答

18

我认为目前没有任何可用的东西 - 表值参数是在SQL Server 2008中引入的 - 在LINQ和LINQ2SQL已经发布之后。

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

更新:
这里有Damien Guard的博客文章讲述了Linq-to-SQL在.NET 4.0时期的修复和改进。

更新2:
不幸的是,根据Damien的说法,这个特性在.NET 3.5中不受支持,在.NET 4.0中也不会受支持:-(

目前无法在3.5或4.0中完成
:( [)amien


你有没有关于.NET4.0中L2S的新功能(如果有的话)的信息? - Dmitri Kouminov
有趣。隧道尽头有一盏灯。LINQ to SQL还活着。太好了。谢谢。 - Dmitri Kouminov
1
这个答案让我崩溃 :( 不,这不是你的错,marc_s :) ... 我和一个朋友今天想要做L2S + TVP ,当我们认为我们离一个终极解决方案如此接近时,我们哭了。:) 回到ole ADO.NET,处理我们应用程序的这一小部分。 - Pure.Krome

4

我偶然发现了这篇文章,它提供了一种从Linq2Sql调用带有TVP参数的存储过程的方法。这是一种比较简单的方法,基本上是通过创建数据上下文的部分类扩展,并使用SqlCommand传递一个dataTable来实现的。希望能对你有所帮助。


它帮助了我!非常感谢! - digaomatias

0

1
虽然这理论上回答了问题,但最好在此处包含答案的基本部分,并提供参考链接。 - Rohit Gupta

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接