Je souhaite effectuer un JOIN
sur deux fichiers de données dans un jeu de données. Par exemple, je travaille sur la base de données AdventureWorks. J'ai besoin des données des tables [Person].[Address]
et [Person].[StateProvince]
et une fois que les données sont dans les données correspondantes, je dois effectuer une colonne JOIN
sur StateProvinceID
.Existe-t-il un meilleur moyen de le faire: Se joint à des données différentes?
Structure des données -
Address {Address,A_StateID}
State {S_StateID,Name}
Ma recherche sur Internet m'a conduit à beaucoup d'exemples qui dit que je vais devoir utiliser un objet DataRelation afin d'effectuer une JOIN
. Les exemples que je trouvais étaient comme -
DataColumn childcolumn = dsAdd.Tables["Address"].Columns["A_StateID"];
DataColumn parentcolumn = dsAdd.Tables["State"].Columns["S_StateID"];
DataRelation relStateID = new DataRelation("StateRel", parentcolumn, childcolumn,false);
dsAdd.Relations.Add(relStateID);
Mais, je ne sais pas ce que je dois faire après avoir ajouté un DataRelation pour effectuer la JOIN
. Donc, j'ai décidé de le faire moi-même -
//I added a new column to my Address table obtain the State Name after performing the `JOIN`
DataColumn A_State = new DataColumn("State");
A_State.DataType = typeof(string);
dsAdd.Tables["Address"].Columns.Add(A_State);
foreach (DataRow dr in dsAdd.Tables["Address"].Rows)
{
//for each row in the Address table I obtain the StateID
string stateid = dr.ItemArray[1].ToString();
string expression = "S_StateID =" + stateid;
//Obtain the corresponding row from State table and update the value in new column in Address table
DataRow[] newdr;
newdr = dsAdd.Tables["State"].Select(expression);
string statename = newdr[0].ItemArray[1].ToString();
dr.SetField("State", statename.ToString());
}
grdJoins.DataSource = dsAdd.Tables["Address"];
grdJoins.DataBind();
Cela fonctionne bien, mais y at-il une meilleure façon de le faire? Comment un JOIN
est-il effectué à l'aide d'un objet Datarelation?
BTW ... J'espère que cela est une application de l'héritage que vous travaillez sur et ne pas utiliser DatSets pour un nouveau développement. – R0MANARMY
Un ensemble de données ne devrait-il pas être utilisé du tout? Pourquoi? Les inconvénients de performance de l'ensemble de données sont-ils si profonds? – pavanred
Pas la performance, il y a juste de meilleurs outils là-bas. Jetez un oeil à [Quels sont les avantages de l'utilisation d'un ORM?] (Http://stackoverflow.com/questions/398134/what-are-the-advantages-of-using-an-orm) comme point de départ. – R0MANARMY