2008-09-03 47 views
10

Có rất nhiều thư viện cung cấp khả năng LINQ cho mã C# tương tác với cơ sở dữ liệu MySql. Cái nào trong số đó là ổn định nhất và có thể sử dụng được trên Mono?Làm cách nào để sử dụng LINQ với cơ sở dữ liệu MySql trên Mono?

Nền (chủ yếu là không liên quan): Tôi có chương trình C# (.Net 2.0) đơn giản cập nhật các giá trị trong cơ sở dữ liệu MySql. Nó được thực hiện hàng đêm thông qua một cron job và chạy trên Pentium 3 450Mhz, Linux + Mono. Tôi muốn viết lại nó bằng cách sử dụng LINQ (.Net 3.5) chủ yếu là một bài tập (tôi chưa sử dụng LINQ).

Trả lời

6

Nhà cung cấp LINQ duy nhất (miễn phí) cho MySql là DbLinq và tôi tin rằng đó là một chặng đường dài từ sản xuất sẵn sàng.

Ngoài ra còn có MyDirect.Net là thương mại, nhưng tôi đã nghe các bài đánh giá hỗn hợp về khả năng của nó.

Tôi đã đọc rằng MySql sẽ triển khai API LINQ to Entities cho phiên bản 5.3 của trình kết nối .net, nhưng tôi không biết liệu có dòng thời gian cho điều đó hay không. Trong thực tế, MySql đã hoàn toàn im lặng về hỗ trợ Entity Framework trong nhiều tháng.


Phụ lục: Phiên bản mới nhất của MySql Connector/Net 6.0 hỗ trợ EF theo ghi chú phát hành. Tôi không biết làm thế nào ổn định/hữu ích này là, vì vậy tôi rất muốn nghe từ bất cứ ai đã thử nó.

+1

Trong khi tìm kiếm g đối với các công cụ Mono DB tôi gặp phải câu trả lời này: DbLinq hiện đang sẵn sàng sản xuất chưa? Có lựa chọn thay thế nào không? –

0

tại thời điểm này, bạn không thể sử dụng LINQ to sql, bạn có thể xem xét nhà cung cấp LINQ mysql của bên thứ ba hoặc LINQ đối với các thực thể. LINQ to sql chỉ hoạt động cho cơ sở dữ liệu máy chủ sql.

0

LINQ to SQL chỉ đơn giản là một lớp ORM tận dụng sức mạnh của các biểu thức để giúp dễ dàng xây dựng các truy vấn trong mã của bạn.

Nếu bạn chỉ đang gọi truy vấn adhoc cho công cụ của mình, có rất ít nhu cầu sử dụng LINQ, nó chỉ thêm một lớp trừu tượng vào mã của bạn.

2

Theo số Mono roadmap Tôi không chắc liệu LINQ có khả dụng cho đơn âm không?

Ít nhất một số LINQ có thể có sẵn trong phiên bản mới nhất, nhưng LINQ to DB được liệt kê cho Mono 2.4 (tháng 2 năm 2009)

2

Không chắc về Mono, nhưng tôi chỉ mới bắt đầu sử dụng LightSpeed và hỗ trợ LINQ -to-MySQL.

+0

LightSpeed ​​hiện hỗ trợ Mono (http://www.mindscape.co.nz/blog/index.php/2009/02/12/lightspeed-and-mono/). – itowlson

0

Tôi đã thử hướng dẫn tại http://www.primaryobjects.com/CMS/Article100.aspx. Điều này sử dụng dblinq/dbmetal để tạo ra lớp bối cảnh dữ liệu và các lớp cho mỗi bảng.

Mã không thành công tại lần thử đầu tiên với ngoại lệ không được xử lý (MySql.Data.Types.MySqlConversionException: Không thể chuyển đổi giá trị ngày/giờ MySQL thành System.DateTime "). Googling tiết lộ điều này sẽ dễ dàng được giải quyết bằng cách thêm" Allow Zero Datetime = True; "cho chuỗi kết nối. Không may là điều này hóa ra là không giải quyết được vấn đề của tôi. Nghĩ về kết nối MySQL .Net là để đổ lỗi cho tôi đã thực thi SQL được tạo bởi dblinq mà không có lớp trung gian linq2sql sử dụng Trình kết nối MySQL. Các bảng không có cột ngày đã làm việc với DbLinq Vì vậy, từ thử nghiệm của tôi, tôi đồng ý với Adam, DbLinq là một chặng đường dài từ khi sản xuất sẵn sàng.

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