Lors du remplissage d'un DataSet, j'utilise la valeur "AddWithKey" pour l'élément MissingSchemaAction du DataAdapter. Selon MSDN:DataSet - Assurer les données PrimaryKey lors du remplissage avec une requête qui est une jointure externe
Ajout d'informations de schéma à un DataSet avant de le remplir avec des données assure que les contraintes de clé primaire sont inclus avec les objets DataTable dans le DataSet .
Mais, quand je fais ce qui suit:
DataColumn[] foo = TheDataSet.Tables["Table1"].PrimaryKey;
Je reçois foo.Length de 0. Y at-il quelque chose de plus que je dois faire en plus de cette ?:
string TheQuery = "SELECT * FROM Table1 LEFT OUTER JOIN Table2 ON Table1.EVENT_NUM = Table2.EVENT_USER_NUM;
using (SqlDataAdapter TheDataAdapter = new SqlDataAdapter(TheQuery, TheConnection)
{
TheDataAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
TheDataAdapter.Fill(TheDataSet, "Table1");
}
Remarque , si ma requête était:
string TheQuery = "SELECT * FROM Table1";
Tout irait bien. Mais, je ne reçois pas de PrimaryKey s'il y a une jointure. Est-ce encore possible (pour obtenir la clé primaire)?
EDIT: Au début, je ne savais pas que c'était un JOIN. Bien, j'ai testé INNER JOINS qui retournerait une clé primaire. Le coupable semble être le fait que c'est un OUTER JOIN. Ainsi, j'ai changé le titre.
La table possède-t-elle une clé primaire? – SLaks
New info: Oui, il y a une clé primaire, mais je viens de réaliser que c'était sur une requête qui était JOIN (les deux tables ont une Clé primaire) – JustLooking
Veuillez ne pas inclure de balises comme C# dans le titre. Gardez-les dans les tags, où ils appartiennent. –