linq praktyczne zastosowanie

0

Posiadam w programie klase Book.cs (klasa ta zostanie pozniej bardziej rozbudowama o nowe metody)

class Book {
 int id;
 string title;

 Book getBook(){...}

}

w bazie danych (Microsoft SQL Server) mam tabele Books oczywiscie z takmi samymi polami.
W visualu polaczylem sie z baza i teraz chcialbym za pomoca linq operowac na tej bazie. Dodajac do projektu nowa klase (Linq to sql classes) i korzystajac z desingera zostal wygenerowany kod

partial class Book {

}

Moje pytanie brzmi czy jezeli teraz do mojej klasy Book.cs rowniez dopisze partial czyli

partial class Book {
 int id;
 string title;

 Book getBook(){...}
}

to czy jest to poprawne rozwiazanie? Czy lepiej nie korzystac z desingera i zrobic mapowanie?

0

Designer LINQ to SQL powinien wygenerować klasę Book razem ze wszystkimi właściwościami zmapowanymi do kolumn. Nie zrobił tego?

0

W klasie

public partial class DataClassesDataContext : System.Data.Linq.DataContext

mam wygenerowany kod dla Book przez desingera jednak chcialbym miec klase Book w osobnym pliku czyli Book.cs i to do niej sie odwolywac

0

Dlaczego jednak chciałbyś tak? Plik z mapowaniem generowany jest automatycznie, więc po pierwsze nie da się, po drugie nawet jakby się dało to nie widzę żadnego ku temu powodu. Każda klasa ma modyfikator partial, więc w osobnym pliku możesz umieścić wszystkie dodatkowe metody i property. Tylko tak jak napisał somekind - ręczne dodanie property zadziała tylko, jeśli dodasz wszystkie niezbędne atrybuty i powiązania, i wywali się przy pierwszym odświeżeniu modelu, ponieważ będziesz mieć property zamapowane dwukrotnie - we własnym pliku i w pliku automatycznie generowanym.

0

Chce miec w osobym pliku poniewaz bede mial wiecej klas ktore beda rozbudowane wiec trzeba sie jakos w tym projekcie orientowac gdzie co jest.
Mimo, ze plik z mapowaniem generowany jest automatycznie to da sie samemu to zrobic, choc pewnie sie to mija z celem ;)
Tak jak napisales w osobnym pliku moge umiescic wszystkie dodatkowe metody i dodajac partial do mojej klasy wszystko mi dziala tylko chodzi mi o to czy tak sie powinno tego uzywac bo byc moze jest inny sposob na powiazanie klas z baza, bo powiedzmy majac 10 klas przy kazdej bede mial partial :|

1

W takim razie, czemu w ogóle używasz LINQ to SQL, które jest stare, nierozwijane, a na dodatek nie daje potrzebnych Ci możliwości?

Użyj np. NHibernate, w którym masz pełnię władzy nad kodem i mapowaniami, wtedy umieścisz swoje klasy w takich plikach, jakie chcesz. Zresztą, chyba nawet w Entity Frameworku można osiągnać podobny efekt.

0

Uzywam LINQ bo myslalem, ze bedzie okej, ale dzieki za rade sprawdze NHibernate i Entity Framework :)

1

NHibernate jest ciężkie i powolne, EF niewiele lepsze :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1