如何使用 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...
}
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...
}