आपकी समस्या यह पंक्ति है:
using (MySqlCommand cmd = new MySqlCommand("INSERT INTO propertyimage(MultipleImageName, MultipleImageMap, PropertyID) VALUES (@MultipleImageName, @MultipleImageMap, LAST_INSERT_ID()); "))
यह पहली प्रविष्टि पर काम करेगा, क्योंकि LAST_INSERT_ID
उपयुक्त विदेशी कुंजी मान है।
लेकिन सेकंड . पर सम्मिलित करें, LAST_INSERT_ID
अब आपके द्वारा डाले गए रिकॉर्ड के आईडी मान में बदल गया है (पहली प्रविष्टि)।
इसे ठीक करने के लिए, आपको LAST_INSERT_ID
get प्राप्त करना होगा एक C# चर में
, और फिर इसे प्रत्येक अनुवर्ती SQL कथन में पास करें (अर्थात LAST_INSERT_ID
के बजाय @ForeignKeyID) )।
इसका मतलब होगा अपने पहले . को बदलना :
cmd.ExecuteNonQuery();
को:
cmd.ExecuteNonQuery();
insertedID = cmd.LastInsertedId;
जहां डाला गया आईडी एक चर है (संभावित int
) जिसे आप अपनी विधि के शीर्ष पर घोषित करते हैं।
फिर आपको बदलना होगा:
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();
}
}
को:
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();
}
}