我正在尝试同时更新记录及其子记录。当我从数据库创建对象时,子属性为null(该属性是通用列表)。
我想更新类并更新子类而不在系统中创建重复记录。
以下是我生成对象的方法:
var r = db.SupplierAs.Where(o => o.id == 1).First();
SupplierA类有一个属性列表。使用上面的代码行返回null
。我一直在尝试编写代码来初始化这个属性,所以我可以更新它,但我没有快乐。
这是我创建的原始项目:
db.Products.Add(new Product
{
name = "product test",
supplierA = new SupplierA
{
name = "supA",
price = 1.99m,
sku = "abc123",
otherCurrencies = new List<Currency>
{
new Currency
{
eur = 2.99m,
usd = 3.99m
}
}
},
});
db.SaveChanges();
我可以像这样轻松更新供应商:
var r = db.SupplierAs.Where(o => o.id == 1).First();
r.name = "Updated name";
db.SupplierAs.Attach(r);
db.Entry(r).State = EntityState.Modified;
db.SaveChanges();
但我无法弄清楚如何将Currency对象列表生成为SupplierAs对象的一部分。货币似乎不在数据库环境中。
以下是类文件:
public class Product
{
public int id { get; set; }
public string name { get; set; }
public virtual SupplierA supplierA { get; set; }
}
public class SupplierA
{
public int id { get; set; }
public string name { get; set; }
public string sku { get; set; }
public decimal price { get; set; }
public List<Currency> Currencies { get; set; }
}
public class Currency
{
public int id { get; set; }
public decimal eur { get; set; }
public decimal usd { get; set; }
}
产品,供应商和货币的概念并不是我所知道的最大意义,我已经从我的应用程序中提取了逻辑示例,希望它足以理解我想要实现的目标。