2009-06-19 3 views
20

Я использую LINQ to SQL с хранимыми процедурами в SQL Server 2008. Все работает хорошо, кроме одной проблемы. L2S не может сгенерировать метод хранимой процедуры с заданным пользователем типом таблицы в качестве параметра. Метод подписи в DBML дизайн панели объекта для использования параметра типа вместо типа таблицы, и когда я пытался скомпилировать я получил ошибку:LINQ to SQL с хранимыми процедурами и определяемым пользователем параметром типа таблицы

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

Есть ли способ обойти эту проблему этой проблемы? Я не хочу возвращаться к традиционному доступу к данным ADO.NET.

ответ

16

Я не думаю, что сейчас есть что-то доступное - параметры табличного значения были введены в SQL Server 2008 - после того, как LINQ и LINQ2SQL уже отсутствовали.

Я не нашел упоминания ни в одном из сообщений в блоге о поддержке табличных параметров в LINQ2SQL в .NET 4.0.

UPDATE:
Вот blog post by Damien Guard на исправления и улучшения для Linq к SQL в сроки .NET 4.0.

UPDATE 2:
К сожалению, по словам Дамьена, эта функция не поддерживается в .NET 3.5, и не будет поддерживаться в .NET 4.0 либо :-(

Не может быть сделано в 3,5 или 4,0 сейчас
:([) Amien

+0

У вас есть информация о новой функции (если таковые имеются) в L2S в .NET4.0? –

+0

Интересно. В конце туннеля свет. LINQ to SQL жив. Отлично. Благодарю. –

+0

Этот ответ убивает меня :(Нет, это не твоя вина marc_s :) ... и я хочу, чтобы сегодня L2S + TVP и плакали, когда мы думали, что мы так близки к решению убийцы :) Вернуться к ole ADO .NET для этой крошечной части наших приложений. –

4

я случайно на этом post, что обеспечивает средство вызова хранимых процедур с параметрами TVP из Linq2Sql. Это круглый о методе, который в основном создает частичный класс extensi на ваш dataContext и передает dataTable с помощью SqlCommand. Я надеюсь, что это помогает.

+0

Это помогло мне! Большое спасибо! – digaomatias

0

У меня была такая же проблема, и образец кода Райана Пречела из следующей ссылки помог мне решить проблему.

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

+1

Хотя это теоретически может ответить на вопрос, [было бы желательно] (// meta.stackoverflow.com/q/8259) включить сюда основные части ответа и предоставить ссылку для справки. –