Ho tre tabelle nidificate in un set di dati. Visualizzo i dati in base all'ID lingua, ovvero: EN è 1 FR è 2 e NL è 3. Francese e inglese esistono nel database, ma l'olandese non esiste ancora e quando l'utente seleziona NL ottengo il seguente errore:Questo vincolo non può essere abilitato poiché non tutti i valori hanno valori parent corrispondenti
This constraint cannot be enabled as not all values have corresponding parent values.
Di seguito è riportato il codice che utilizzo per ottenere i dati. L'errore si verifica quando provo a creare relazioni nel set di dati.
(ds.Relations.Add(new DataRelation("Cat_SubCat", dk1, dk2));
Ora la mia domanda è: come posso controllare se il valore esiste nel set di dati o database con il codice indicato di seguito?
public static DataTable GetData(Int32 languageID)
{
DataSet ds = new DataSet();
string commandText = @"SELECT * FROM AlacarteCat where languageID = @ID;
SELECT * FROM AlacarteSubCat where languageID = @ID;
SELECT * from AlacarteItems where languageID = @ID";
using (SqlConnection myConnection = new SqlConnection(Common.GetConnectionString("SQLConnectionString")))
{
SqlCommand command = new SqlCommand(commandText, myConnection);
command.Parameters.Add("@ID", SqlDbType.Int);
command.Parameters["@ID"].Value = languageID;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = command;
da.TableMappings.Add("AlacarteCat", "AlacarteCat"); // table 0
da.TableMappings.Add("AlacarteSubCat", "AlacarteSubCat"); // table 1
da.TableMappings.Add("AlacarteItems", "AlacarteItems"); // table 2
da.Fill(ds, "AlacarteCat");
DataColumn dk1 = ds.Tables[0].Columns["ID"];
DataColumn dk2 = ds.Tables[1].Columns["AlacarteCatID"];
DataColumn dk3 = ds.Tables[1].Columns["ID"];
DataColumn dk4 = ds.Tables[2].Columns["AlacarteSubCatID"];
DataColumn dk5 = ds.Tables[0].Columns["id"];
DataColumn dk6 = ds.Tables[2].Columns["AlacarteCatID"];
ds.Relations.Add(new DataRelation("Cat_SubCat", dk1, dk2));
ds.Relations.Add(new DataRelation("SubCat_Items", dk3, dk4));
ds.Relations.Add(new DataRelation("Cat_Items", dk5, dk6));
if ((ds != null))
{
return ds.Tables["AlacarteCat"];
}
return null;
}
}