konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Cześć!

Piszę na tej grupie gdyż jest tu dużo więcej ludzi niż na stricte asp.net, Ci co są to się pewno pokrywają więc śmiało mogę pisać tutaj i mam nadzieję, że nikt mi za to krzywdy nie zrobi:)

otóż chodzi mi o to jakich metod dostępu do baz danych(z reguły MSSQL) używacie?
Przechodzę z PHP na ASP.NET i C# i z PHP mam przyzwyczajenie z przyjemnych frameworków które zdecydowaną większość spraw z danymi robiły za mnie, wyszukiwanie sprowadzało się do prostego wpisania kryteriów ot i tyle. Jak to najlepiej rozwiązać i co wykorzystywać pod C#/ASP.NET

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Najintensywniej ORM - LLBLGen i Linq2SQL. Do tego jakieś epizody z NHibernate i BLToolkit.

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

możesz np. tak (proste zapytanie)


using System.Data.SqlClient;

...

string connStr = @"Data Source=myServerAddress;Initial
Catalog=myDataBase;User Id=myUsername;Password=myPassword;";
string query = "SELECT * FROM table";

SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(query, conn);

conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
//reader[0].ToString() - pierwsze pole z zapytania
}

reader.Close();
conn.Close();


to taka najprostsza wersja. Koledzy pewnie zaraz podeślą inne. Poszukaj też o LINQ jeśli wolisz.
Grzegorz W.

Grzegorz W. właściciel, Webio

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Lightpeed (testowe wsparcie dla VS2010 jednak tylko dla klientow posiadajacych licencje).

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Marcin Sałata:

Do amatorskich zastosowań czemu nie. Do bardziej profesjonalnych to tylko kłopoty - zwłaszcza z utrzymaniem.

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

może zawężę - poszukuje darmowych rozwiązań a nie wiem czy te które wymieniliście są takie..
Maciej Aniserowicz

Maciej Aniserowicz software
developer/architect

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

NHiberate, Linq2Sql, EntityFramework, SubSonic, kiedyś Sooda... te wszystkie są darmowe. I każdy z nich jest lepszy niż ręcznie klepanie zapytań i tworzenie obiektów z DataReadera.
Zainteresuj się KTÓRYMKOLWIEK z wymienionych ORMów, a życie stanie się prostsze.

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

z lin2sql jest taki problem że wklepując to w google nie znajduje żadnej konkretnej stronki o tym :/

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Marek Urbanowicz:
z lin2sql jest taki problem że wklepując to w google nie znajduje żadnej konkretnej stronki o tym :/

http://weblogs.asp.net/scottgu/archive/2007/08/16/linq...

Na stronie linki do czesci 1-5.

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Małe zestawienie Ormów:

NHiberate + Fluent Nhibernate (mapowanie lambdami) taki oto zestaw bym polecał dla najbardziej wymagających projektów.

Ling2Sql jest dość szybki, dużo designerów, większość robi za ciebie (co nie zawsze jest dobre).

Subsonic jest szybki, prosty w budowie (łatwo coś zmienić, dopisać), oraz w większości przypadków wystarczający.

EntityFramework nie polecam gdyż jest to wielkie i bardzo powolne bydle, Ms go promuje jako "go to" dla projektów typu enterprise ale prawda jest taka że przy średnich projektach już pojawiają się problemy (może kolejna wersja będzie lepsza).
Marcin Sałata:
możesz np. tak (proste zapytanie)


using System.Data.SqlClient;

...

string connStr = @"Data Source=myServerAddress;Initial
Catalog=myDataBase;User Id=myUsername;Password=myPassword;";
string query = "SELECT * FROM table";

SqlConnection conn = new SqlConnection(connStr);
SqlCommand cmd = new SqlCommand(query, conn);

conn.Open();

SqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
//reader[0].ToString() - pierwsze pole z zapytania
}

reader.Close();
conn.Close();

Nie zwalniasz zasobów ;-)Bartosz Adamczewski edytował(a) ten post dnia 25.02.10 o godzinie 00:41

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Też bym polecał NHibernate.

Jak dla mnie ten ORM jest najwygodniejszy z tego względu, że bardzo łatwo można wprowadzać zmiany.

EF i Linq2Sql czasem sobie kiepsko radzą ze zmianami na bazie danych. Z mojego doświadczenia to miałem tak, że czasem designer robił za dużo (albo nie tak jak chciałem) a jak zmieniałem XML było ok, tyle że przy zmianie na schemacie bazy VS regenerował wszystkie moje ingerencje w XML i szlag je trafiał.

Do tego LINQ jest całkiem przyjemne ale wygodniejsze czasem jest konstruowanie ICriteria niż budowanie zapytania LINQ wtedy kiedy nasze zapytanie zależy od wielu czynników.

I tak na marginesie to Linq2Sql jest już zamkniętym projektem przez MS na rzecz EF.

Dodatkowo NHibernate operuję na obiektach POCO (co jest dużym plusem) i daję możliwość mapowania do prywatnych zmiennych/właściwości klas (zajebisty plus :) ).Karim Agha edytował(a) ten post dnia 28.02.10 o godzinie 05:02
Paweł W.

Paweł W. Synergia Systemy
Informatyczne

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Myślę, że zarządzanie zmianą bazy danych w projekcie nad którym pracuje grupa ludzi ma kolosalne znaczenie.
W przypadku NHibernate cały schemat znajduje się w mappingu (czy Fluent czy Hbm(xml)) to są małe pliki a nie ogromne xml jak w przypadku np DataSetów (nie wiem jak jest w Linq2Sql) więc mergowanie w repozytorium to nie problem.
Schemat w postaci SQL tworzącego bazę można odzyskać jednym poleceniem, a narzędzie typu http://www.red-gate.com/products/SQL_Compare/index.htm
zrobi migrację za Ciebie.

Paweł
Karim Agha:
Też bym polecał NHibernate.

Jak dla mnie ten ORM jest najwygodniejszy z tego względu, że bardzo łatwo można wprowadzać zmiany.

EF i Linq2Sql czasem sobie kiepsko radzą ze zmianami na bazie danych. Z mojego doświadczenia to miałem tak, że czasem designer robił za dużo (albo nie tak jak chciałem) a jak zmieniałem XML było ok, tyle że przy zmianie na schemacie bazy VS regenerował wszystkie moje ingerencje w XML i szlag je trafiał.

Do tego LINQ jest całkiem przyjemne ale wygodniejsze czasem jest konstruowanie ICriteria niż budowanie zapytania LINQ wtedy kiedy nasze zapytanie zależy od wielu czynników.

I tak na marginesie to Linq2Sql jest już zamkniętym projektem przez MS na rzecz EF.

Dodatkowo NHibernate operuję na obiektach POCO (co jest dużym plusem) i daję możliwość mapowania do prywatnych zmiennych/właściwości klas (zajebisty plus :) ).Karim Agha edytował(a) ten post dnia 28.02.10 o godzinie 05:02

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

cześć

jak sytuacja z ADO Entity Framework wygląda aktualnie po wyjściu .NET 4.0 ?
warto czy nadal tylko NHibernate ?
Cel to społecznościówka.

Jeśli NHibernate a nie ADO to możecie polecić jakiś konkretny tutorial z którego od podstaw można się nauczyć NH ?

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

chętnie bym się dowiedział, jakie problemy z EF kolega wcześniej z tym wątku miał na myśli w związku z większymi projektami.
używaliśmy EF, NET 4.0, Linq2Entities i WCF RIA services po stronie serwera, a RIA + SL po stronie klienta. nie jest to trudniejsze niż inne podejścia, których także trzeba się nauczyć. owszem, były jakieś problemy, ale albo je rozwiązaliśmy, albo nie wiem o tym, co przed nami... chętnie bym się dowiedział o co koledze chodziło.
Ryszard S.

Ryszard S. Senior Software
Developer

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Świetny tutorial LINQ to SQL dla początkujących

http://weblogs.asp.net/scottgu/archive/2007/09/07/linq...

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Paweł W.:
Myślę, że zarządzanie zmianą bazy danych w projekcie nad którym pracuje grupa ludzi ma kolosalne znaczenie.
W przypadku NHibernate cały schemat znajduje się w mappingu (czy Fluent czy Hbm(xml)) to są małe pliki a nie ogromne xml jak w przypadku np DataSetów (nie wiem jak jest w Linq2Sql) więc mergowanie w repozytorium to nie problem.
Schemat w postaci SQL tworzącego bazę można odzyskać jednym poleceniem, a narzędzie typu http://www.red-gate.com/products/SQL_Compare/index.htm
zrobi migrację za Ciebie.

Nie konieczne jest tworzyć taki schemat, można zastosować odpowiednie atrybuty w klasach (podobnie ma się rzecz dla NHibernate). Potem w miejscu gdzie tworzymy DataContext ustawiamy:


private static readonly MappingSource MappingSource = new AttributeMappingSource();

public readonly DataContext Context = new DataContext(ConnString, MappingSource);


Co oznacza że używamy tylko atrybutów (żadnych plików Xml).

Potem tylko dla klas ustawiamy odpowiednie atrybuty i jedziemy.

Mały przykład:



namespace Sample
{
using System;
using System.Data.Linq.Mapping;

[Table(Name = "Sample")]
public class Entity
{
[Column(Name = "Id", CanBeNull = false, IsDbGenerated = true, IsPrimaryKey = true, UpdateCheck = UpdateCheck.Always, DbType = "Int")]
public int Id { get; set; }
[Column(Name = "Name", CanBeNull = true, UpdateCheck = UpdateCheck.Always, DbType = "NVARCHAR(100)")]
public int Name { get; set; }

[Column(Name = "CreatedDate", CanBeNull = false, IsDbGenerated = true, UpdateCheck = UpdateCheck.Always, DbType = "DateTime")]
public DateTime CreatedDate { get; set; }
}
}



Ciekawy artykuł (lecz tam przykład bazuje na plikach XML)

http://www.sidarok.com/web/blog/content/2008/10/14/ach...Yelena Shapovalova edytował(a) ten post dnia 10.07.10 o godzinie 22:56

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Marek Urbanowicz:
jak sytuacja z ADO Entity Framework wygląda aktualnie po wyjściu .NET 4.0 ?
warto czy nadal tylko NHibernate ?
Cel to społecznościówka.

Nie ma w tym momencie dla .net niczego, co mozna porownac do lidera czyli NHibernate. Dlaczego to temat na referat ;)
Jeśli NHibernate a nie ADO to możecie polecić jakiś konkretny tutorial z którego od podstaw można się nauczyć NH ?

Google twoim sprzymierzencem, pierwszy z brzegu traktujacy o podstawach:

http://napalmpiri.wordpress.com/about-2/a-quickstart-w...

ActiveRecord to czesc druga, obowiazkowa, np:

http://www.castleproject.org/activerecord/

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Bartosz Rakowski:
chętnie bym się dowiedział, jakie problemy z EF kolega wcześniej z tym wątku miał na myśli w związku z większymi projektami.
używaliśmy EF, NET 4.0, Linq2Entities i WCF RIA services po stronie serwera, a RIA + SL po stronie klienta. nie jest to trudniejsze niż inne podejścia, których także trzeba się nauczyć. owszem, były jakieś problemy, ale albo je rozwiązaliśmy, albo nie wiem o tym, co przed nami... chętnie bym się dowiedział o co koledze chodziło.

Z tego co piszesz (.net4 - na rynku od dwoch miesiecy) wnioskuje, ze musial to byc malutki projekt, przy takich mozna sobie pozwolic na EF. Im wiekszy projekt tym koszty utrzymania wieksze - a te przy EF sa bardzo wysokie. Nie wspomne tutaj o prawidlowym DDD na EF, zadanie dla masochistow ;)
Kamil Karaźniewicz

Kamil Karaźniewicz Programowanie
technologie
Microsoft ASP, C#,
SHAREPOINT, ...

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Witam,
a co powiecie o XPO ? Wiem że nie jest darmowy, ale jak ma się on do innych ORMów?

konto usunięte

Temat: ASP.NET - jakiej metody dostępu do baz danych używacie?

Bartosz Rakowski:
chętnie bym się dowiedział, jakie problemy z EF kolega wcześniej z tym wątku miał na myśli w związku z większymi projektami.
używaliśmy EF, NET 4.0, Linq2Entities i WCF RIA services po stronie serwera, a RIA + SL po stronie klienta. nie jest to trudniejsze niż inne podejścia, których także trzeba się nauczyć. owszem, były jakieś problemy, ale albo je rozwiązaliśmy, albo nie wiem o tym, co przed nami... chętnie bym się dowiedział o co koledze chodziło.

Zakładam że chodziło o mnie? :), nie używałem EF w wersji 4.0 ale mogę co nieco powiedzieć o pierwszym wydaniu dla 3.5.

Nasz schemat miał ok 200 tabel włączenie tego pod jeden Entity Model powodowało załamanie designera, oraz załamanie wydajności, należało grzebać palcem w xmlach (które są znacznie bardziej skomplikowane niż te z NH np). Kolejnym problemem była rozszerzalność każdorazowo gdy ktoś pozmieniał coś w xmlu oraz inna osoba pobierała projekt otworzyła sobie model i bum wszystkie zmiany znikały, model generował się na nowo, można było go oczywiście wyłączyć ale należy o tym pamiętać. To są fakty które nie tak wpływają na wydajność lecz powodują frustrację.

Kolejnym problemem były procedury składowane które zwracają zestaw danych, należało udzielać się do brudnych sztuczek w xmlu, jako że EF ich nie wspierał, dostępne były tylko funkcje out of the box.

Podzapytania to katastrofa, były tak okrutnie wolne że select na małym zbiorze danych zajmował ponad 10 sek gdy robiło się to metodą LINQ ostatecznie prawie każde zapytanie było pisane w ENTITY SQL, więc jako String i strong typing wyleciał przez okno, selecty generowane przez EF były ogromne (4K linijek czasami) podobno teraz to poprawili ale wtedy były mało wydajne.

Czasami zdarzało się że Model się de synchronizował, co powodowało naprawdę dziwne zachowania, oraz jeszcze dziwniejsze wyjątki przy jego walidacji, generator potrafił coś źle zrobić.

W efekcie nasz wielki schemat podzieliliśmy na ok 20 mniejszych Domen gdzie każda miała do 10 zmapowanych obiektów (warto tu nadmienić że nasze obiekty były dość ciężkie) gdyż każda większa ilość powodowała znaczące obniżenie wydajności, było to niezłe rozwiązanie ale ograniczenia były znaczne bo natychmiast traciliśmy spójność grafu jako całości, nie można było joina zrobić pomiędzy obiektami z różnych domen a czasami było to wymagane (jest na to sposób).

Fajną rzeczą było dziedziczenie w modelach pomiędzy obiektami, lecz ono spowolniało całą zabawę jeszcze bardziej, obiekty complex teoretycznie były zaimplementowane lecz nie out of the box więc należało je pisać w xmlu ale po kilu nie udanych próbach okazało się że nie do końca działają gdyż nie było zgodności ze scheemą EF oraz skutkowało to wyjątkiem.

To po krótce moje wrażenia co do EF dla 3.5 w projekcie, mam nadzieje ze nowy EF naprawił co nieco z tych rzeczy które mnie w nim denerwowały, dla porównania z NH + Fluent nigdy nie miałem podobnych problemów, jedynie początkowa konfiguracja pierwszy raz sprawiała mi pewne problemy.



Wyślij zaproszenie do