j'ai écrit un programme de test simple qui accédera au modèle par défaut des ressources humaines sur un express Oracle en mode direct en utilisant DevArt dotConnect pour Oracle v 6.8.0.350.StoreGeneratedPattern ne fonctionne pas avec DevArt Entity Framework?
using (var ctx = new HREntities())
{
var locNew = new LOCATION();
locNew.CITY = "Magdeburg";
ctx.LOCATIONs.AddObject(locNew);
ctx.SaveChanges();
// will output 0; in database ID is generated
Console.WriteLine(locNew.LOCATIONID);
}
Comme vous pouvez le voir, je fais un insert dans le tableau LOCATION
. Ici, j'ai ajouté un déclencheur:
create or replace
trigger TRG_LOCATION_INS
before insert on "HR"."LOCATIONS"
for each row
begin
if inserting then
select LOCATIONS_SEQ.nextval into :NEW."LOCATION_ID" from dual;
end if;
end;
La dernière étape se couchait StoreGeneratedPattern
dans mon modèle à Identity
(oui, je vérifié s'il est écrit dans le XML).
Si j'exécute l'application de test, l'enregistrement est créé et il a un nouveau LocationID
valide. Mais dans EF le nouvel identifiant n'arrivera pas.
Pourquoi ne reconnaît-il pas l'ID généré? Si oui, qu'est-ce que ça veut dire: DevArt Blog
EDIT: Je l'ai testé dans différents scénarios maintenant:
- DevArt EntityModel en mode direct
- DevArt EntityModel avec OracleClient
- ADO.NET EntityModel avec OracleClient
Le résultat est le même. Non DSID
est renvoyé sur SaveChanged. Comme autre résultat, si j'écris
ctx.Refresh(RefreshMode.ClientWins, log);
un InvalidOperationException soulèvera en disant qu'il ya maintenant entité clé « 0 » qui est correct mais pas utile :-(.
Désolé, j'ai vu votre réponse trop tard. Merci. – sprinter252
Cela a été corrigé Dans les versions plus récentes, je crois .. J'ai un. Edml et EntityFramework 6 – hanzolo