2010-04-19 5 views
15

Một cái gì đó như thế này.Có thư viện xây dựng Sql động cho .Net không?

http://code.google.com/p/squiggle-sql/wiki/Tutorial.

Điều này là bắt buộc đối với các trường hợp bắt buộc phải xây dựng sql phức tạp từ đầu vào của người dùng từ giao diện người dùng. Hiện tại trong dự án tôi đang làm việc đang sử dụng thao tác chuỗi trông xấu xí và khó duy trì.

+0

bạn có thể thử http://sqlkata.vivida-apps.com, aC# sql query builder – amd

Trả lời

11

Hãy thử DbExtensions, có sẵn là NuGet package.

+0

DbExtensions rất dễ sử dụng. Tuy nhiên, nó có một vài vấn đề thiết kế cơ bản. Đầu tiên, nó không có nhiều chức năng INSERT IGNORE INTO mong muốn. Thứ hai, nó rất cứng nhắc. Khi một người làm INSERT_INTO, anh ta không thể làm INSERT_INTO ({0} ({1}, {2}), tableName, col1, col2) bởi vì điều đó sẽ thêm dấu nháy đơn xung quanh các tham số. Thay vào đó bạn phải sử dụng quá tải và về cơ bản hardcode trong chuỗi đầu vào. Một ví dụ khác là làm các giá trị mà bạn hoặc phải làm GIÁ TRỊ (some_string) hoặc làm VALUE ({0} = {1}, col1, val1). Với điều đó nói rằng, nó không phải là một thư viện xấu nhưng nó để lại nhiều để được mong muốn. –

+0

@SomeNewbie Đăng nhận xét của bạn [tại đây] (https://github.com/maxtoroq/DbExtensions/issues) và tôi sẽ giúp bạn. –

0

Tôi luôn xây dựng của riêng mình ... thật nhanh chóng và dễ dàng và bạn không phải dựa vào thư viện của bên thứ ba. Thêm vào đó nó giúp bạn trở nên thân mật hơn một chút với SQL.

+1

Đó là sự thật nếu bạn là một lập trình viên, nhưng tôi có thể nhìn thấy thư viện mà được sử dụng để lái xe một GUI cho phép những người không lập trình/nhập dữ liệu để xây dựng các truy vấn chung đối với một cơ sở dữ liệu. Họ sẽ không bao giờ có thể làm như vậy * hiệu quả * nhưng đôi khi nó hữu ích. –

+0

Bạn có muốn chia sẻ nó không? – SuperManSL

+1

Có thực sự dễ dàng không? Bạn xử lý các lựa chọn phụ như thế nào? Có gõ mạnh không? Tham gia? Răng cưa? Bạn có thể nhóm các mục trong một mệnh đề where để các câu lệnh OR không vô hiệu hóa các câu lệnh AND không? Tôi có thể tiếp tục. –

2

Không phải là tôi biết (mặc dù điều đó không có nghĩa là chắc chắn không có).

Còn khung thực thể thì sao? Nó cho phép các truy vấn được xây dựng và chuyển đến SQL chống lại các đơn vị:

customers.OrderBy(c => c.Name).Skip(10).Take(20) 

Tạo:

SELECT value c 
FROM NW.Customers AS c 
ORDER BY c.Name skip 10 limit 20; 
+1

Ứng dụng tôi đang làm việc trên .Net 2.0. Vì vậy, EF không phải là một lựa chọn cho tôi. – Amitabh

+0

Bạn có thể sử dụng một orm thổi đầy đủ như NHibernate? Nó sẽ cho bạn khả năng xây dựng các truy vấn của tôi thông qua API tiêu chí. –

+0

Chúng tôi đang sử dụng nHibernate 1.2 trong ứng dụng của chúng tôi nhưng chức năng cụ thể này đã bỏ qua nHibernate vì lý do hiệu suất. – Amitabh

2

Bất cứ điều gì sai trái với LINQ-to-SQL?

var dc = new YourDataContext(); 
var query = dc.TableName.Where(x=>x.MatchesYourPredicate); 
Console.WriteLine(dc.GetCommand(query).CommandText); 
+0

Dự án mà tôi cần là dự án .Net 2.0. – Amitabh

+0

Điều đó thật tệ. Tôi xin lôi. – smartcaveman

+1

Ngoài ra, các yếu tố lọc không phải lúc nào cũng biết – Thea