2010-07-15 25 views
1

Ceci est ma table:SQLite + Entity Framework 4.0 + colonne Identity/AutoInc ne fonctionne pas

-- Original table schema 
CREATE TABLE [SchoolYear] (
    [Start] datetime NOT NULL, 
    [End] datetime NOT NULL, 
    [Id] integer PRIMARY KEY ON CONFLICT ABORT AUTOINCREMENT NOT NULL 
); 

Mon entité dans le concepteur EF a mis StoredGeneratedPattern à l'identité OU Compute et type de données est int64.

Everytime I insérer un deuxième objet Année scolaire je reçois cette erreur:

An object with the same key is already in the ObjectStateManager...

Répondre

3

Vérifiez que la propriété auto-incrémentée a l'attribut StoreGeneratedPattern réglé sur « Identité » dans la partie SSDL du modèle, pas CSDL.
Ceci est un problème connu, l'attribut conceptuel n'est pas pris en compte lors de la génération du code.

+0

son ensemble à l'identité à la fois: SSDL + CSDL donc cela devrait fonctionner, mais ce n'est pas! – msfanboy

+0

sans le reconnaître plus tôt j'ai une nouvelle exception aujourd'hui: System.InvalidOperationException était non gérée: ... La propriété EntityKey ne peut être définie lorsque la valeur actuelle de la propriété est nulle ... EDIT: Ajout un nouvel objet au contexte fonctionne pour la première fois quand je vérifie la table une nouvelle rangée est créée, ainsi l'autoinc doit fonctionner. C'est quelque chose de différent maintenant! – msfanboy

+0

Quelle erreur stupide qui était: (a encore une nouvelle exception ...) J'ai ajouté toujours le même objet au contexte qui semblait être le problème. Maintenant ça marche. J'aurais pu jurer, que EF v1 m'a permis d'ajouter autant d'objets égaux que je voulais sans émettre d'exception, EF v1 a juste évité d'ajouter l'objet dupe. Cela semble-t-il changé dans EF v4? – msfanboy