J'ai créé deux tables:ParentRelations ne fonctionnent pas dans les DataSets générés?
Editeur
- PK, PublisherID, int, non null, indentité +1
- PublisherName, varchar (50), non null
Produit
- PK, ProductId, int, non null, l'identité +1
- ProductName, varchar (50), non null
- PublisherID, int, non null
Ensuite, je crée une contrainte de clé étrangère FK__Product__Publisher entre ces tables connectant les PublisherId. De cette façon, je veux prendre en charge les produits qui ont un éditeur chaque fois que chaque éditeur peut avoir plusieurs produits. C'est aussi simple que ça.
Maintenant, j'ai créé un projet de console en C#, ajouté un jeu de données typé et deux TableAdapter. Un pointant vers Publisher un vers Product. DataSet-Designer ajoute automatiquement la relation en fonction de ce qu'elle obtient à partir de SQL Server.
Il génère également automatiquement des propriétés qui devraient me permettre d'accéder à l'éditeur à partir d'un produit sélectionné et de tous les produits d'un éditeur sélectionné.
Ceci est mon code de test:
ProductTableAdapter adapter = new ProductTableAdapter();
foreach (ProductRow product in adapter.GetData())
{
Console.WriteLine(product.PublisherRow.PublisherName);
}
Cependant, cela ne fonctionne pas. Avec le code généré, la PublisherRow propriété ressemble à ceci:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public LanguageRow PublisherRow {
get {
return ((PublisherRow)(this.GetParentRow(this.Table.ParentRelations["FK_Product_Publisher"])));
}
set {
this.SetParentRow(value, this.Table.ParentRelations["FK_Product_Publisher"]);
}
}
this.Table.ParentRelations ne contient pas la relation. Il est nul et son accès entraîne une exception NullReferenceException.
Qu'est-ce que je fais mal ici?
est-ce que quelqu'un sait une meilleure façon? – Mephisztoe