Подтвердить что ты не робот

LINQ to SQL с хранимыми процедурами и пользовательским параметром типа таблицы

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

4b9b3361

Ответ 1

Я не думаю, что сейчас есть что-то доступное - параметры табличного значения были введены в 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

Ответ 2

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