如何更新具有子实体的记录?

时间:2014-11-11 20:57:27

标签: c# entity-framework ef-code-first entity-framework-6

我正在尝试同时更新记录及其子记录。当我从数据库创建对象时,子属性为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; }
}

产品,供应商和货币的概念并不是我所知道的最大意义,我已经从我的应用程序中提取了逻辑示例,希望它足以理解我想要实现的目标。

0 个答案:

没有答案