2010-07-20 12 views
1

Je ne sais pas pourquoi c'est une erreur sur SaveChanges(), je recherche dans google, certains corps disent en utilisant EF, la table de la base de données telle que la clé primaire, j'ai encore, mais toujours une erreur. Le message d'erreur n'est pas assez clair, il lève juste System.Data.UpdateException. Le code:.NET 4.0 Entity Framework Erreur lors de l'insertion?

public static void AddAccount(int _acc_id,string _name) 
{ 
    dataEntities de = new dataEntities(GetEntityConn()); 
    account acc = new account 
    { 
     account_id = _acc_id, 
     name = _name 
    }; 
    de.AddObject("account", acc); 
    de.SaveChanges(); 
} 
+2

Quel est le message de l'exception? – adriaanp

+0

C'est juste une ligne: Impossible de mettre à jour l'EntitySet. :( – Cheung

+0

Ajoutez votre solution comme une réponse, et marquez-la comme telle afin de "fermer" cette question, et qu'elle serve de référence pour les autres :) –

Répondre

0

Mes pouvoirs psychiques me dire que le champ account_id a une contrainte unique et que la valeur de _acc_id est déjà dans la table.

Si mes puissants pouvoirs psychiques sont faux, alors plus d'informations sont nécessaires. 8)

+0

La table a 2 colonne, account_id et le nom, j'ai enlever le account_id = acc_id maintenant, le account_id l'auto-incrément, parce que je lis (SQL CE, lorsqu'il est utilisé avec EF4, ne supporte pas les clés primaires générées automatiquement: http://social.msdn.microsoft.com/forums/en-US/sqlce/thread/48984bd4-0921-4637-bd8f-8aa1ae9514ab /) maintenant je viens d'insérer le nom, mais ne fonctionne toujours pas :( – Cheung

+0

Peut-être utiliser une procédure stockée pour faire le Ajouter en passant juste le nom et utiliser EF pour appeler la procédure stockée – Task

0

Deviner que le EntitySetName n'est pas appelé compte, mais c'est difficile à dire sans plus d'informations.

Ce que je voudrais faire est quelque chose comme:

public static void AddAccount(int _acc_id,string _name) 
{ 
    dataEntities de = new dataEntities(GetEntityConn()); 
    account acc = new account 
    { 
     account_id = _acc_id, 
     name = _name 
    }; 
    de.Accounts.Add(acc); 
    de.SaveChanges(); 
} 

Cela se débarrasse de la valeur de chaîne, il devrait aussi aider refactoring

+0

J'ouvre le * .edmx pour voir, le nom d'ensemble d'entité est vraiment "compte" :( Cependant, et il n'y a pas de méthode "Add", voici la capture d'écran http://www.img xc.com/fullimage/qNzIWp.png – Cheung

+0

ce n'est pas AccountSet? – Jeroen

+0

Quel type est 'de.account'? –

0

Mise à jour: J'ai essayé de créer une même table sur SQL Server 2008, générez le fichier edmx à partir de cela, et utilisez le même code pour l'insertion, ça marche! Donc, je crois tout à propos de EF 4.0 avec SQLCE .... je télécharger un projet de test sous forme de fenêtre, avec une base de données SQLCE, et un événement de bouton, vous pouvez télécharger sur

http://www.netfrd.com/testproject.zip

Le code est très simple, mais ça ne marche vraiment pas.

Questions connexes