Visualizza il feed RSS

sspintux

Gestione Identity in Oracle 11gR2 con EF 4.3.1 e ODAC 11.2 Rel. 4

Valuta questo inserimento
di pubblicato il 25-03-2012 alle 11:53 (3353 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 zero dopo avere persistito il record con il seguente codice

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 :

codice:
....
<EntityType Name="ENTList">
  <Key>
    <PropertyRef Name="ENT_ID" />
 </Key>
 <Property Name="ENT_ID" Type="number" Nullable="false" Precision="6" StoreGeneratedPattern="Identity" />
....

aggiornamento da 25-03-2012 a 14:27 di sspintux

Categorie
Programmazione , Microsoft

Commenti