LINQ to SQL с хранимыми процедурами и пользовательским параметром типа таблицы - PullRequest
20 голосов
/ 19 июня 2009

Я использую 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.

Ответы [ 3 ]

16 голосов
/ 19 июня 2009

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

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

UPDATE:
Вот блог от Damien Guard об исправлениях и улучшениях для Linq-to-SQL за период .NET 4.0.

ОБНОВЛЕНИЕ 2:
К сожалению, согласно Дэмиену, эта функция не поддерживается в .NET 3.5 и не будет поддерживаться в .NET 4.0: - (

Не может быть сделано в 3.5 или 4.0 прямо сейчас
:( [) amien

4 голосов
/ 08 мая 2013

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

0 голосов
/ 24 июня 2015

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

Как передать параметры табличных значений в хранимую процедуру из кода .net

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...