Váš problém je tento řádek:
using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, LAST_INSERT_ID()); "))
Toto bude fungovat při prvním vložení od LAST_INSERT_ID
je vhodná hodnota cizího klíče.
Ale na druhé vložit, LAST_INSERT_ID
se nyní změnilo na hodnotu ID záznamu, který jste právě vložili (první vložení).
Chcete-li to opravit, musíte získat LAST_INSERT_ID
do proměnné C#
a poté jej předejte do každého následujícího příkazu SQL (tj. @ForeignKeyID spíše než LAST_INSERT_ID
).
To bude znamenat změnu vašeho prvního :
cmd.ExecuteNonQuery();
komu:
cmd.ExecuteNonQuery();
insertedID = cmd.LastInsertedId;
kde insertID je proměnná (pravděpodobně int
), kterou deklarujete v horní části vaší metody.
Poté budete muset změnit:
using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, LAST_INSERT_ID()); "))
{
using (MySqlDataAdapter sda = new MySqlDataAdapter())
{
cmd.Parameters.AddWithValue("@MultipleImageName", file.FileName);
cmd.Parameters.AddWithValue("@MultipleImageMap", "ImagesUploaded/" + file.FileName);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}
komu:
using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, @InsertedID); "))
{
using (MySqlDataAdapter sda = new MySqlDataAdapter())
{
cmd.Parameters.AddWithValue("@MultipleImageName", file.FileName);
cmd.Parameters.AddWithValue("@MultipleImageMap", "ImagesUploaded/" + file.FileName);
cmd.Parameters.AddWithValue("@MultipleImageMap", "ImagesUploaded/" + file.FileName);
cmd.Parameters.AddWithValue("@InsertedID", InsertedID);
cmd.Connection = con;
con.Open();
cmd.ExecuteNonQuery();
con.Close();
}
}