2008-10-11 43 views
9

Tôi có một trang ASP.Net sử dụng ADO để truy vấn cơ sở dữ liệu truy cập MS và như một bài tập học tập tôi muốn kết hợp LINQ. Tôi có một bảng đơn giản gọi là Quotes.Trang LINQ asp.net chống lại MS Access.

Các trường là: QuoteID, QuoteDescription, QuoteAuthor, QuoteDate. Tôi muốn chạy các truy vấn đơn giản như "Hãy cho tôi tất cả các trích dẫn sau năm 1995".

Làm thế nào tôi sẽ kết hợp LINQ vào trang web ASP.Net này (C#)

Về cơ bản, câu hỏi của tôi là làm LINQ làm việc cho MS Access ??

+0

Xem câu trả lời của tôi ở đây https://stackoverflow.com/questions/295772/query-microsoft-access-mdb-database- sử dụng-linq-và-c-sharp/46945250 # 46945250, bằng cách sử dụng VB.net trên Windows Forms –

Trả lời

18

LINQ to SQL không hỗ trợ truy cập (nghĩa là, không có nhà cung cấp truy cập/máy bay phản lực cho LINQ), nhưng bạn có thể truy vấn một tập dữ liệu với LINQ. Điều này có nghĩa rằng bạn điền vào DataSet của bạn với bất kỳ dữ liệu có thể từ cơ sở dữ liệu của bạn mà bạn có thể cần trong kết quả của bạn, và sau đó bạn lọc ở phía khách hàng. Sau khi bạn đã gõ một DataSet, và bạn Fill() nó với một TableAdapter, bạn làm một cái gì đó như thế này:

Bạn sẽ phải quyết định xem điều này có đáng không. Bạn sẽ phải điền vào Số liệu của mình với tất cả các dấu ngoặc kép, sau đó sử dụng LINQ để lọc chỉ những dấu ngoặc kép sau năm 1995. Đối với một lượng nhỏ dữ liệu, chắc chắn, tại sao không? Nhưng đối với một lượng dữ liệu rất lớn, bạn sẽ cần phải đảm bảo rằng nó sẽ không quá chậm.

Nếu bạn đang sử dụng Số liệu, bạn có thể viết truy vấn tùy chỉnh trở thành các phương pháp TableAdapter mới. Vì vậy, bạn có thể đặt đúng SQL cho truy vấn của bạn trong một phương thức FillByYear() trong TableAdapter của bạn và sử dụng nó để điền vào DataTable đã nhập của bạn. Bằng cách đó, bạn chỉ lấy lại dữ liệu bạn cần.

Nếu bạn đi tuyến đường này, hãy nhớ rằng Access/Jet sử dụng thông số vị trí, không phải thông số được đặt tên. Vì vậy, thay vì

SELECT * FROM Quotes WHERE Year(QuoteDate) > @Year 

bạn muốn sử dụng một cái gì đó như thế này:

SELECT * FROM Quotes WHERE Year(QuoteDate) > ? 
4

Tôi không nghĩ LINQ to SQL hỗ trợ truy cập. Tuy nhiên, nếu bảng của bạn đủ nhỏ để vừa với bộ nhớ, LINQ to DataSet sẽ cho phép bạn truy vấn datatables vv khá dễ dàng - đặc biệt là tập dữ liệu mạnh mẽ.

+0

bạn có thể giải thích ý của bạn bằng LINQ to DataSet hay không. ngay bây giờ trong truy vấn của tôi tôi truy vấn đến một datatable – leora

+0

LINQ to DataSet về cơ bản là một tập hợp các phương thức mở rộng trên DataSet và DataTable. Ý tưởng là để có thể thực hiện các truy vấn đối với dữ liệu bạn đã tìm nạp từ cơ sở dữ liệu. Xem http://www.danielmoth.com/Blog/2007/07/linq-to-dataset.html để biết thêm thông tin. –

+0

Bạn không có nghĩa là "Truy cập" - nghĩa là JET. –

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