2011-06-24 12 views

Odpowiedz

36

Po wstawieniu encji powinna ona zostać zaktualizowana, tak aby właściwość odwzorowująca klucz podstawowy w bazie danych miała nową wartość PK.

+2

Czy dzieje się to przy dodawaniu czy muszę najpierw zapisać zmiany w kontekście, zanim dostanę użyteczny identyfikator? –

+4

Zmiany muszą zostać zatwierdzone do bazy danych, dodaj tylko umieszcza je w kontekście, dopóki nie trafisz do bazy danych, wartość PK nie zostanie wygenerowana. –

+0

Należy pamiętać, że nie zawsze jest to całkowicie niezawodne z powodu błędu SCOPE_IDENTITY. – DFTR

26

Tak, oczywiście, możesz to zrobić. Zobacz przykład:

int id = 0; 

using (PC2Entities objectContext = new PC2Entities()) 
{ 
    objectContext.ClientContacts.AddObject(clientContact); 
    objectContext.SaveChanges(); 
    id = clientContact.Id; 

    transaction.Complete(); 
} 

id to PK.

0

Jeśli nadal nie otrzymasz identyfikatora po wstawieniu, dodaj ten atrybut do właściwości klucza podstawowego.

[DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
public string ID { get; set; } 

Musiałem to zrobić, nie wiem dlaczego, może dlatego, że używam wyroczni, a struktura obiektu nie jest z tego powodu szczęśliwa.

Powiązane problemy