如何使用 Entity Framework 在 WPF c# 中为两个表之间的一对多关系插入数据?

How to insert data for one to many relationship between two tables in WPF c# using Entity Framework?

try
{
    foreach (IEnumerable<string> row in itemgridshow.Items)
    {
        var valueslist = row.ToList();

        Order_Item oi = new Order_Item();
        oi.Item_Description = valueslist[0].ToString();
        oi.Item_Copy = int.Parse(valueslist[1].ToString());
        oi.Item_Price = int.Parse(valueslist[2].ToString());
        oi.Item_Amount = int.Parse(valueslist[3].ToString());
        oi.Item_Image = valueslist[4].ToString();

        neworder.Order_Item.Add(oi);

        db.Order_Item.Add(oi);
    }

    db.Order_Master.Add(neworder);
    db.SaveChanges();
}

Order_Master 是主要 table,Order_Item 是次要 table。我想在单个保存按钮操作中插入 Order_Master 记录和许多 Order_item 详细信息。

db 是上下文名称。

对于 order_item 数据通过字符串数组中的数据网格 (itemgrid.items) 传递。

一切看起来都很好,上面的代码没有导致任何错误,但是数据没有插入到数据库中。请帮我解决这个问题。

我没有发现上面的代码片段有任何逻辑问题。

尝试重构代码,封装上下文使用可能会发现保存未发生的原因。

    public void SaveOrder(IEnumerable<string> rows)
    {
        // Create a new order and add items
        var neworder = new Order_Master();
        foreach (var row in rows)
        {
            var valueslist = row.ToList();
            var oi = new Order_Item();

            oi.Item_Description = valueslist[0].ToString();
            // Set more properties...

            // Add the item to the order
            neworder.Order_Item.Add(oi);
        }

        // Instance a context, add the order and save
        try
        {
            using (var db = new OrderContext())
            {
                db.Order_Master.Add(neworder);
                db.SaveChanges();
            }
        }
        catch (Exception e)
        {
            throw new Exception($"Failed to save to database: {e.Message}");
        }
    }

实体模型应如下所示:

    public class OrderContext : DbContext
    {
        public DbSet<Order_Master> Order_Master { get; set; }
        public DbSet<Order_Item> Order_Items { get; set; }
        // More entities...
    }

    public class Order_Item
    {
        public int Id { get; set; }

        public string Item_Description { get; set; }
        // More properties...
    }

    public class Order_Master
    {
        public Order_Master()
        {
            Order_Item = new List<Order_Item>();
        }

        public ICollection<Order_Item> Order_Item { get; set; }

        public int Id { get; set; }

        public string Order_Description { get; set; }
        // More properties...
    }