2009-10-23 1 views
2

Lorsque je développe des applications ASP.NET, je crée souvent des formulaires qui permettent aux utilisateurs de créer, de récupérer ou de mettre à jour des enregistrements dans une base de données. Plusieurs fois, il est nécessaire de pouvoir ajouter des enregistrements enfants à un élément que je crée, comme l'ajout d'une catégorie à un produit ou une sorte de relation de commande/détails de commande. Normalement, j'utilise une sorte de DropDownList pour afficher une liste d'enregistrements enfants possibles, puis un DataGrid pour montrer quels enfants font déjà partie du parent. Actuellement, la seule façon que je connaisse pour accomplir cela dans ASP.NET exige que je sauvegarde d'abord l'enregistrement parent dans la base de données afin que je puisse assigner des relations PK/FK afin que je puisse DataBind les DataGrids qui contiennent les enregistrements enfants. Ce que je voudrais savoir, c'est si je pouvais implémenter le formulaire de façon à pouvoir ajouter ou supprimer des enregistrements de ces DataGrids mais pas les valider jusqu'à ce que l'utilisateur clique sur 'Save' pour créer ou mettre à jour tous les enregistrements requis à la fois. Je commence à migrer de l'utilisation de SubSonic à LINQ si cela fonctionne mieux pour DataBinding. Cela semble assez difficile avec l'apatridie de HTTP.Comment utiliser les contrôles DataBound avec une architecture déconnectée dans ASP.NET?

Toutes les pensées sont grandement appréciés,

Mike

Répondre

1

Vous pouvez utiliser un cache DataSet pour cela. Ils sont à peu près conçus pour être utilisés en tant que représentations en mémoire de données relationnelles basées sur des tables. En fait, je vraiment ne recommande pas cette approche pour diverses raisons, mais vous pouvez mettre en cache votre DataSet sur le serveur, permet à l'utilisateur d'interagir avec elle (ajout, la modification, la suppression et ainsi de suite) par postbacks, et seulement persister les changements à la base de données sous-jacente réelle à la fin.

Je pense une meilleure façon de le faire, cependant, est de faire toutes les modifications apportées à la base de données sous-jacente que l'utilisateur les entre dans une transaction, puis engage uniquement la transaction à la fin.

+0

Si vous ne me dérange pas demander, pourquoi ne vous recommande pas vraiment votre recommandation? Est-ce dû aux problèmes de performance que j'ai lus à propos de DataSets? – mclark1129

+2

Si vous ne transmettez pas de données précocement et souvent dans une application Web, vous risquez de perdre tout ce que vous avez fait si vous laissez votre session expirer. –

+1

@Mike C: Le point de Christian est une grande partie du problème. En outre, je n'aime généralement pas l'idée de mettre en cache des choses dans une application Web, car cela signifie allouer des ressources serveur à quelque chose qui ne peut jamais être utilisé. Et un DataSet est généralement une assez grande chose à mettre en cache. – MusiGenesis

Questions connexes