Mam metodę web api post, która wstawia nowy wiersz w mojej tabeli w mojej bazie danych Oracle. Mam problem z kluczem podstawowym tabeli, który jest wartością sekwencji. Jak zrobić my_primary_key_seq.nextval
w Entity Framework? Obecnie ten kod działa, ale naruszy unikalne ograniczenie PK, gdy nowy wiersz zostanie wstawiony za pośrednictwem naszej starej formuły internetowej .net, która używa sekwencji następnej wartości jako następnego klucza podstawowego.Jak uzyskać wartość następnej sekwencji Oracle w .NET Entity Framework?
decimal nextPK = context.FORMPPs.OrderByDescending(p => p.PPID).FirstOrDefault().PPID + 1;
item.PPID = nextPK;
context.FORMPPs.Add(item);
int result = context.SaveChanges();
To tak naprawdę nie odpowiada na twoje pytanie, ale możesz również umieścić atrybut na własności ID twojej jednostki (na przykład: '[DatabaseGenerated (DatabaseGeneratedOption.Identity)]'), co spowoduje automatyczne wygenerowanie klucza głównego . Następnie możesz uzyskać identyfikator przypisany do nowego wiersza, pobierając wartość właściwości ID obiektu, po wywołaniu 'SaveChanges()'. –
Mogę wstawić nowy wiersz używając, dodając 1 do bieżącego maksymalnego klucza podstawowego, ale nie powoduje to również zwiększenia wartości SEQUENCE, więc nawet jeśli aktualny kod działa, jeśli ktoś wstawi nowy wiersz za pomocą starej witryny internetowej .NET, to pęknie, ponieważ numer SEKWENCJI nie jest zsynchronizowany. – iCanObjSeeSharp