2010-04-19 14 views
15

Coś takiego.Czy istnieje dynamiczna biblioteka konstruktora Sql dla .Net?

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

Jest to wymagane w przypadkach, w których wymagane jest zbudowanie złożonego sql z danych wprowadzonych przez użytkownika z interfejsu użytkownika. Obecnie w projekcie pracuję za pomocą manipulacji String, która wygląda brzydko i jest trudna do utrzymania.

+0

można spróbować http://sqlkata.vivida-apps.com, aC# sql query builder – amd

Odpowiedz

11

Spróbuj DbExtensions, dostępny jako NuGet package.

+0

DbExtensions jest łatwy w użyciu. Ma jednak kilka podstawowych problemów projektowych. Po pierwsze, nie ma większego pragnienia WSTAWIĆ IGNORE INTO. Po drugie jest bardzo sztywny. Kiedy robi się INSERT_INTO, nie może wykonać INSERT_INTO ({0} ({1}, {2}), tableName, col1, col2), ponieważ spowoduje to dodanie pojedynczych cudzysłowów wokół parametrów. Zamiast tego należy użyć przeciążenia i zasadniczo hardcode w ciągu wejściowym. Innym przykładem jest wykonywanie WARTOŚCI, które trzeba wykonać WARTOŚCI (some_string) lub VALUE ({0} = {1}, col1, val1). Powiedziawszy to, nie jest to zła biblioteka, ale pozostawia wiele do życzenia. –

+0

@SomeNewbie Zamieść swoje komentarze [tutaj] (https://github.com/maxtoroq/DbExtensions/issues), a ja ci pomogę. –

0

Zawsze buduję swoje własne ... jest to szybkie i łatwe i nie musisz polegać na bibliotekach zewnętrznych. Dodatkowo pomaga ci stać się bardziej intymnym z SQL.

+1

To prawda, jeśli jesteś programistą, ale widzę, że biblioteki są używane do napędzania GUI która pozwala osobom nie-programistom/osobom wprowadzającym dane na budowanie ogólnych zapytań w bazie danych. Nigdy nie będą w stanie tego zrobić * sprawnie *, ale czasami jest to przydatne. –

+0

Czy chcesz podzielić się nim? – SuperManSL

+1

Czy to naprawdę takie proste? W jaki sposób korzystasz z subselekcji? Czy jest silne pisanie? Łączący? Aliasing? Czy możesz grupować elementy w klauzuli where, więc instrukcje OR nie unieważniają instrukcji AND? Mógłbym iść dalej. –

2

Nie jestem tego świadomy (choć nie oznacza to, że zdecydowanie nie jest).

Co z Entity Framework? Pozwala to kwerenda być budowane i tłumaczy, że do SQL wobec podmiotów:

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

Generuje:

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

Aplikacja, nad którą pracuję, jest w .Net 2.0. Więc EF nie jest dla mnie opcją. – Amitabh

+0

Czy możesz użyć pełnowymiarowego narzędzia takiego jak NHibernate? Da ci możliwość budowania zapytań I poprzez API Criteria. –

+0

Używamy nHibernate 1.2 w naszej aplikacji, ale ta szczególna funkcjonalność obejściła nHibernate ze względu na wydajność. – Amitabh

2

coś złego LINQ-SQL?

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

Projekt, którego potrzebowałem, to projekt .Net 2.0. – Amitabh

+0

To jest do bani. Przepraszam. – smartcaveman

+1

Ponadto, elementy filtrujące nie zawsze są znane. – Thea