Gestione Identity in Oracle 11gR2 con EF 4.3.1 e ODAC 11.2 Rel. 4
di
pubblicato il 25-03-2012 alle 12:53 (3666 Visite)
.
L'ambiente e lo scenario delle mie prove sono i seguenti :
- Visual Studio 2010
- Entity Framework 4.3.1
- DBMS Oracle Express Edition 11gR2
- ODAC 11.2 Release 4 (32 bit)
Si vuole inserire un record nella tabella ENT fornita di una PK ENT_ID numerica che si desidera sia autoincrementale;
questo si può ottenere in Oracle definendo una Sequence ed un Trigger;
Problema:
dopo aver creato il modello .edmx dal database e verificato nel designer di EF che la proprietà
ENT_ID compaia correttamente come Nullable="False" e StoreGeneratedPattern="Identity",
succede che quest'ultima resta inaspettatamente e pervicacemente a zerodopo avere persistito il record con il seguente codice
... var newEnt= new Ent() { NOME = "GIGI", COGNOME= "SSPINTUX"}; ctx.EntList.AddObject(newEnt); ctx.SaveChanges(); ....La soluzione si trova nel seguente articolo:
Oracle Data Provider for .NET
In buona sostanza occorre aprire a "manina" il file .edmx con l'editor xml ed aggiungere StoreGeneratedPattern="Identity" anche alla definizione del set dell'entità come segue :
.... <EntityType Name="ENTList"> <Key> <PropertyRef Name="ENT_ID" /> </Key> <Property Name="ENT_ID" Type="number" Nullable="false" Precision="6" StoreGeneratedPattern="Identity" /> ....