2009-06-19 30 views
20

Tôi đang sử dụng LINQ to SQL với các thủ tục được lưu trữ trong SQL Server 2008. Mọi thứ hoạt động tốt ngoại trừ một vấn đề. L2S không thể tạo phương thức cho thủ tục được lưu trữ với kiểu bảng do người dùng định nghĩa làm tham số. Phương pháp chữ ký trong đối tượng sử dụng bảng điều khiển thiết kế dbml cho tham số gõ thay vì loại bảng và khi tôi cố gắng biên dịch tôi đã nhận lỗi:LINQ to SQL với các thủ tục lưu sẵn và tham số kiểu bảng do người dùng định nghĩa

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

Có cách nào để làm việc xung quanh này của vấn đề này? Tôi không muốn quay trở lại truy cập dữ liệu ADO.NET truyền thống.

Trả lời

16

Tôi không nghĩ rằng có bất cứ điều gì có sẵn ngay bây giờ - tham số giá trị bảng đã được giới thiệu trong SQL Server 2008 - sau khi LINQ và LINQ2SQL đã được ra.

Tôi chưa tìm thấy bất kỳ đề cập nào trong bất kỳ bài đăng blog nào về hỗ trợ cho các tham số có giá trị bảng trong LINQ2SQL trong .NET 4.0 cho đến nay.

UPDATE:
Dưới đây là một blog post by Damien Guard trên các bản sửa lỗi và cải tiến cho LINQ-to-SQL trong khung thời gian .NET 4.0.

UPDATE 2:
Thật không may, theo Damien, tính năng này không được hỗ trợ trong .NET 3.5, và sẽ không được hỗ trợ trong .NET 4.0 hoặc :-(

Không thể thực hiện trong 3,5 hoặc 4,0 ngay bây giờ
:([) Amien

+0

Bạn có bất kỳ thông tin nào về tính năng mới (nếu có) trong L2S ​​trong .NET4.0 không? –

+0

Thú vị. Có một ánh sáng ở cuối đường hầm. LINQ to SQL vẫn còn hoạt động. Tuyệt quá. Cảm ơn. –

+0

Câu trả lời này giết chết tôi: (Không, đó không phải lỗi của bạn marc_s :) ... một người bạn đời và tôi muốn làm L2S + TVP hôm nay và khóc khi chúng tôi nghĩ rằng chúng tôi rất gần với giải pháp sát thủ :) Trở lại ole ADO .NET cho phần nhỏ này của các ứng dụng của chúng tôi. –

4

tôi tình cờ khi post này cung cấp một phương tiện để gọi thủ tục lưu trữ với các thông số TVP từ Linq2Sql. đó là một vòng về phương pháp đó về cơ bản tạo ra một lớp extensi phần trên dataContext của bạn và chuyển một dataTable bằng SqlCommand. Tôi hy vọng nó sẽ giúp.

+0

Nó đã giúp tôi! Cảm ơn rất nhiều! – digaomatias

0

Tôi đã gặp sự cố tương tự và mã mẫu của Ryan Prechel từ liên kết sau đã giúp tôi giải quyết vấn đề.

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

+1

Trong khi điều này về lý thuyết có thể trả lời câu hỏi, [nó sẽ là thích hợp hơn] (// meta.stackoverflow.com/q/8259) để bao gồm các phần thiết yếu của câu trả lời ở đây, và cung cấp liên kết để tham khảo. –

Các vấn đề liên quan