Dmitri Kouminov
Dmitri Kouminov

Reputation: 591

LINQ to SQL with stored procedures and user defined table type parameter

I am using LINQ to SQL with stored procedures in SQL Server 2008. Everything work well except one problem. L2S cannot generate the method for the stored procedure with user defined table type as parameter. Method signature in dbml design panel use object for parameter type instead of table type and when I tried to compile I got error:

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

Is there a way to work around this of this problem? I don't want to go back to traditional ADO.NET data access.

Upvotes: 23

Views: 16601

Answers (3)

VicariousAT
VicariousAT

Reputation: 183

I had the exact same problem and Ryan Prechel's sample code from the following link helped me solve the problem.

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

Upvotes: 0

cboler
cboler

Reputation: 739

I happened upon this post that provides a means of calling stored procedures with TVP parameters from Linq2Sql. It's a round about method that basically creates a partial class extension of your dataContext and passes a dataTable using an SqlCommand. I hope it helps.

Upvotes: 4

marc_s
marc_s

Reputation: 754468

I don't think there's anything available right now - table-valued parameters were introduced in SQL Server 2008 - after LINQ and LINQ2SQL were out already.

I haven't found any mention in any of the blog post about support for table-valued parameters in LINQ2SQL in .NET 4.0 so far.

UPDATE:
Here's a blog post by Damien Guard on the fixes and improvement for Linq-to-SQL in the .NET 4.0 time frame.

UPDATE 2:
Unfortunately, according to Damien, this feature isn't supported in .NET 3.5, and will not be supported in .NET 4.0 either :-(

Can't be done in 3.5 or 4.0 right now
:( [)amien

Upvotes: 18

Related Questions