我正在调用一个端点并收回一个对象列表,让我们称之为Receipts
。每个收据可以包含可变数量Vehicles
的列表。我希望使用由收据ID和车辆ID组成的复合键来保存记录。
我将模型设置为:
public class Receipt
{
[Key]
[Column(Order=1)]
public string id { get; set; }
public int count { get; set; }
public List<Vehicles> vehicles { get; set; }
public class Vehicles
{
[Key]
[Column(Order=2)]
public string id { get; set; }
}
}
接下来,我将Receipt添加到DbContext
public class DbContext : System.Data.Entity.DbContext
{
public DbSet<Receipt> Receipt { get; set; }
}
最后,我插入/更新并保存更改
try
{
using (var dbContext = new DbContext())
{
dbContext.Receipt.AddOrUpdate(receipt);
dbContext.Receipt.SaveChanges();
}
}
我的程序没有捕获任何异常,但表/数据库是完全空的。我是否正确构造对象以通知实体框架我希望如何保存这些行?一种选择是在收据中循环每个车辆,并创建一个新实体,用于存储收据ID和车辆ID以及所需的其他字段
答案 0 :(得分:0)
由于您的数据库完全空了,而且您的代码也没有显示任何迹象,我担心您的问题的解决方案是实际调用
dbContext.SaveChanges();
为了使其真正按预期工作,如评论中所述,您的属性应该是
public virtual ICollection<Vehicles> Vehicles { get; set; }
虽然我不知道这是否有问题,但我建议将您的Vehicle类作为普通的非嵌套类。