0

我正在使用 C# 和 Visual Studio 从带有实体框架的 MSSQL DB 获取数据,并再次使用 MySQL.Data nuget 包和 C# 和 Visual Studio 将其导入 MySQL DB。如果我有没有前键的数据,一切都很好,导入完成。这是代码:

var context = new SupermarketsChainEntities();
var measures = context.Measures;
var supermarkets = context.Supermarkets;
var vendors = context.Vendors;
var expenses = context.Expenses;
var products = context.Products;

    String myConn = "server=localhost;Database=supermarkets_chain;uid=root;pwd=;";
    MySqlConnection conn = new MySqlConnection(myConn);
    conn.Open();

    //Insert measures
    foreach (var measure in measures)
    {
        String insertQuery = "insert into measures (id, name) values (null, @name)";
        MySqlCommand cmd = new MySqlCommand(insertQuery, conn);
        cmd.Parameters.AddWithValue("@name", measure.Name);
        cmd.ExecuteNonQuery();
    }

但是当我尝试在具有一对多关系和外键的表中导入数据时:

foreach (var product in products)
        {
            String insertQuery = "insert into products (id, name, price, measure_id, vendor_id) values (null, @name, @price, @measure_id, @vendor_id)";
            MySqlCommand cmd = new MySqlCommand(insertQuery, conn);
            cmd.Parameters.AddWithValue("@name", product.Name);
            cmd.Parameters.AddWithValue("@price", product.Price);
            cmd.Parameters.AddWithValue("@measure_id", product.Measure);
            cmd.Parameters.AddWithValue("@vendor_id", product.Vendor);
            cmd.ExecuteNonQuery();      
        }

出了点问题,我得到以下异常:

Unhandled Exception: MySql.Data.MySqlClient.MySqlException: Cannot add or update
 a child row: a foreign key constraint fails (`supermarkets_chain`.`products`, C
ONSTRAINT `fk_products_measures` FOREIGN KEY (`measure_id`) REFERENCES `measures
` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)
   at MySql.Data.MySqlClient.MySqlStream.ReadPacket()
   at MySql.Data.MySqlClient.NativeDriver.GetResult(Int32& affectedRow, Int64& i
nsertedId)
   at MySql.Data.MySqlClient.Driver.GetResult(Int32 statementId, Int32& affected
Rows, Int64& insertedId)
   at MySql.Data.MySqlClient.Driver.NextResult(Int32 statementId, Boolean force)

   at MySql.Data.MySqlClient.MySqlDataReader.NextResult()
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteReader(CommandBehavior behavior
)
   at MySql.Data.MySqlClient.MySqlCommand.ExecuteNonQuery()
   at SqlToMysql.Program.Main(String[] args) in d:\SoftUni\DatabaseApps\Teamwork
\SqlToMysql\SqlToMysql\Program.cs:line 67

有人可以帮我处理问题并正确导入数据。我在这里附加数据库架构。

4

0 回答 0