Mam raczej wyjątkowy problem, więc pomyślałem, że zapytam tutaj:
Muszę opracować model Code First, w którym użytkownik ma 2 pola identyfikatora, jedno unikalne (identyfikujące każdego użytkownika osobno) i jedno, które nie będzie unikalne dla każdego użytkownika (używane do celów grupowania).
Jak przejść do uzyskania pola, które czasami pobiera wartość z bazy danych (unikatowej), a czasem jest ustawiane przez mój kod (gdy używam go do grupowania)?
Czy są jakieś adnotacje, które mogą pomóc, więc kiedy przypisuję wartość, która jest tą, która jest używana, a kiedy niczego nie przypisuję, automatycznie otrzymuje nowy identyfikator?
Odpowiedzi:
1 dla odpowiedzi № 1Jedynym sposobem na to i wygenerowanie wartości przez DB jest użycie wyzwalacza. Ponieważ jest to projekt oparty na kodzie, być może nie chcesz tego robić.
Najlepszym rozwiązaniem, IMHO, byłoby zrobienieGroupId GUID, a następnie ustaw go na Guid.NewGuid () w konstruktorze obiektu danych. W ten sposób zawsze domyślnie ma unikalną wartość i jeśli ustawisz właściwość, użyje podanej wartości. Domyślnie uzyskujesz wyjątkowość i grupowanie, kiedy chcesz. Ponieważ jest utrzymywany w kodzie, nie musisz się martwić utrzymaniem wyzwalacza w innym miejscu.