Je développe une application WinForms (.Net 3.5, sans WPF) où je veux être capable d'afficher des recherches de clés étrangères dans une DataGridView de databound.Liaison de données WinForms et relations de clés étrangères
Un exemple du type de relation est que j'ai une table de lignes de commande. Les lignes de commande ont une relation de clé étrangère avec les produits et les produits qui ont à leur tour une relation de clé étrangère avec ProductTypes.
Je voudrais avoir une base de données DataGridView où chaque ligne représente une ligne de commande, affichant le produit et le type de produit de la ligne. Les utilisateurs peuvent ajouter ou éditer des lignes de commande directement à la grille et choisir le produit pour la ligne de commande à partir d'une comboBoxColumn - ceci devrait alors mettre à jour la colonne producttype, montrant le type de produit pour le produit sélectionné, dans la même rangée.
Le plus proche d'un bon ajustement que j'ai trouvé jusqu'à présent est d'introduire un objet de domaine représentant une ligne de commande, puis lier le DataGridView à une collection de ces lignes de commande. Ensuite, j'ajoute des propriétés à l'objet de la ligne de commande exposant le produit et le type de produit, et génère des événements notifypropertychanged pertinents pour que tout soit à jour. Dans mon référentiel de ligne de commande, je peux ensuite relier les mappages entre cet objet de ligne de commande et les trois tables de ma base de données.
Cela fonctionne pour le côté de la liaison de données, mais avoir à coder à la main tout ce mappage OU dans le référentiel semble mauvais. Je pensais que nHibernate serait capable d'aider avec ce câblage, mais je suis aux prises avec les mappages à travers toutes les clés étrangères - ils semblent fonctionner correctement (la recherche de clé étrangère pour le produit d'une ligne de commande crée l'objet produit correct basé sur la clé étrangère) essayez de faire la liaison de données, je ne peux pas obtenir les colonnes id de databound pour mettre à jour mon produit ou les objets producttype.
Est-ce que mon approche générale est la bonne? Si c'est le cas, quelle est la bonne solution au problème de la cartographie?
Ou, y a-t-il une meilleure solution aux lignes de liaison de données incluant les recherches de clés étrangères que je n'ai même pas envisagées?
Merci Garo - qui couvre joliment ce que j'ai moi-même trouvé. La seule différence est que j'ai une colonne de clé étrangère, pas une grille. Je vais aussi mettre à jour ma réponse, ce qui me permet de savoir exactement ce qui m'a causé des problèmes - je pense que les raisons pour lesquelles j'ai mal diagnostiqué le problème à l'origine pourraient être utiles –