10
votes

ASP.NET MVC GET ID de l'enregistrement ajouté dernier

J'utilise un formulaire Web MVC pour insérer un enregistrement dans une base de données avec plusieurs sous -records. Dans mon code-derrière, je crée d'abord un nouvel enregistrement principal à l'aide de DataRePository.add (XX). Maintenant, j'ai besoin d'ajouter 5 sous -records qui ont besoin de l'ID de l'enregistrement nouvellement créé. Comment puis-je récupérer ça?


4 commentaires

Comment votre référentiel de données est-il mis en œuvre? Linq aux entités? Linq à SQL? Données de données typées? Besoin de code.


MVC Webform n'est pas un oxymoron?


Juste une remarque: n'utilisez pas de fichiers de code-derrière avec ASP.NET MVC!


Je pense que le terme WebForm a été utilisé ici dans le sens général. Je ne pense pas qu'ils veulent dire dans le sens de WebForms. Au moins j'espère pas.


3 Réponses :


1
votes

Vous devez probablement soumettre tous les 5 enregistrements plus la principale sur votre Datalayer, effectuant toute validation sur le chemin de votre couche d'entreprise. Ensuite, en fonction de la mise en œuvre de votre DL, enregistrez l'enregistrement principal, renvoyant l'ID, définissez l'ID parent sur les sous-secords et enregistrez-les. Faites-le tout dans une seule transaction et vous devriez être ok.

Veuillez donner plus d'informations sur votre couche d'accès aux données.

Si vous utilisez MS SQL Server, vous utiliseriez le Scope_Identity () dans votre procédure stockée pour obtenir la dernière valeur d'identité insérée dans une colonne d'identité. Voir cette Article MSDN

Si vous utilisez NHibernate Vous les ajoutez dans la même session et NHibernate s'occupe de générer le SQL responsable de l'insertion des enregistrements avec les identifiants corrects.


0 commentaires

2
votes

Si vous utilisez un orj, tel que l'embauche d'entité, vous devriez pouvoir créer l'enregistrement et les enregistrements associés, de les lier en ajoutant les enregistrements associés à une collection sur l'objet principal ou en les configurant d'une manière ou d'une autre, puis appelez la méthode de sauvegarde. sur le contexte. Cela fera tout le lien avec IDS, etc. pour vous.

Comment faites-vous accès aux données?


0 commentaires

27
votes

En supposant que XX est votre modèle et sa clé principale est ID, vous pouvez obtenir l'identifiant de votre enregistrement inséré comme suit:

// at this point xx.Id == null
db.XX.AddObject(xx);
db.SaveChanges();
// now: xx.Id > 0
int id = xx.Id;


0 commentaires