2009-02-11 12 views
9

Jestem nowy w LINQ. Właśnie przeciągnąłem wszystkie moje tabele bazy danych na projektanta w LINQ do SQL dbml. Wszystkie moje relacje są poprawne i ładnie wyglądają w projektancie. Jestem w stanie pobierać dane za pomocą prostego kodu LINQ. Chcę teraz dodać własne metody, ale nie chcę zmywać moich zmian, jeśli (kiedy) potrzebuję zregenerować mój dbml. Zgaduję, że po prostu utworzę nowy plik klasy i ustawiam klasy częściowe wygenerowanych klas. Czy to jest poprawne? Na przykład, mam wygenerowane klasy o nazwie SystemUser która zawiera kolumny SystemUserId, Nazwa użytkownika, Hasło, PersonID, SecurityQuestionId, SecurityQuestionResponse. Chcę dodać metody nazywanej Uwierzytelnij void() oraz nową właściwość o nazwie bool uwierzytelnionych. Zasadniczo chcę przekazać w nazwę użytkownika i hasło do authenticate() i ustawić uwierzytelnionych właściwość opartą na znalezienie użytkownikowi dopasowanie itd Gdzie iw jaki sposób mogę to zrobić?Dodawanie nowych metod do LINQ do klas wygenerowanych przez SQL

Odpowiedz

13

Klasy generowane przez LINQ są klasami częściowymi, co oznacza, że ​​można je rozszerzyć, tworząc własne partial classes lub partial methods.

W twoim przypadku możesz utworzyć częściową klasę dla swojego SystemUser, a następnie dodać tam swoją metodę (metody). Nie zostaną one zastąpione, jeśli plik DBML zostanie zregenerowany.

Coś jak:

public partial class SystemUser 
{ 
    public bool Authenticated { get; set; } 

    void Authenticate() 
    { 
     //Perform custom logic here. 
    } 
} 
+0

Wszystkie odpowiedzi były pomocne, ale spodobało mi linki, który podałeś. Jestem nowy w StackOverflow, więc myślę, że wygrasz !? Dzięki. – user64874

+0

Woohoo! Dzięki. :-) –

2

Spójrz na użycie klasy Częściowe ... może to bardzo dobrze pasować do Twojej sytuacji.

1

Jeśli chcesz, aby twoja klasa miała nową metodę, musisz utworzyć nowy plik i użyć częściowej klasy.