2010-10-29 32 views
1

J'ai une page comme Commande - Lignes de commande. L'ordre représente par certains textboxes et ddls, les lignes d'ordre représente par GridView.EF4 - Ajouter un objet à un objetcontext sans savechanges

Je souhaite autoriser les utilisateurs à ajouter des lignes de commande sans enregistrer les modifications dans la base de données. Par exemple: il ajoute 4 lignes de commande, remplit les informations de commande et frappe ensuite le bouton Enregistrer. Seulement un moment, toutes les informations doivent être enregistrées dans DB.

Quand j'utiliser le code

using (Entities ctx = new Entities()) 
{ 
//create new OrderLine 
OrderLine ol = OrderLine.CreateOrderLine(1, 1, "", 1); 
//add OrderLine to OrderLines collection 
ctx.CreateOrderLines.AddObject(ol); 
} 

nouvellement créé OrderLine n'apparaît dans mon contexte de l'objet, je ne peux pas y accéder et lier GridView à la nouvelle collection de ListeCommande.

Comment puis-je résoudre ce problème? Ou peut-être existe-t-il d'autres façons d'effectuer cette tâche?

Merci.

Répondre

0

Vous pouvez essayer de détacher l'objet Order et de le manipuler jusqu'à ce que vous soyez prêt à le réenregistrer dans la base de données.

+0

Il n'y a aucun problème avec le détachement. Le problème est dans GridView. Comment je dois travailler avec quand j'ai besoin d'ajouter, supprimer et mettre à jour des lignes, mais sans sauvegarde instantanée. Toutes les données doivent être enregistrées dans la base de données à la fin, lorsque vous cliquez sur le bouton Enregistrer. – Smile

+0

J'ai fait quelque chose de similaire en créant une version plus petite des objets (avec seulement les propriétés dont j'ai besoin) et en les stockant dans une session. Vous ne voulez pas stocker toutes les données GridView dans la session, mais peut-être un objet léger. Ensuite, lorsque l'utilisateur valide, vous pouvez copier les valeurs sur votre objet ObjectContext et appliquer les modifications. – dotariel

+0

Je ne comprends pas comment je devrais travailler dans cette situation avec GridView. Les utilisateurs doivent voir qu'une nouvelle ligne ajoutée est également ajoutée dans Grid. Imaginez: l'utilisateur ajoute 4 lignes de mon formulaire => il y a 4 postbacks => 4 nouvelles lignes ajoutées à GridView. Mais à ce moment, aucune donnée enregistrée dans la base de données. Que l'utilisateur supprime 1 ligne de ce 4 => 1 postbask => 1 ligne a été supprimée de GridView (toujours 3 là). Toujours pas de données enregistrées. Maintenant l'utilisateur a décidé d'éditer 1 ligne => encore 1 postback => 1 ligne mise à jour dans GridView. Enfin, l'utilisateur clique sur le bouton Enregistrer et toutes les données modifiées/créées sont enregistrées dans la base de données. – Smile