繁体   English   中英

实体框架:如何在 foreach 循环中更新子数据

[英]Entity Framework: How to update child data in foreach loop

看我的代码

    using (var db = new TestDBContext())
    {
        var existingCustomer = db.Customer
        .Include(a => a.Addresses.Select(x=> x.Contacts))
        .FirstOrDefault(p => p.CustomerID == 5);

        existingCustomer.FirstName = "Test Customer122";

        foreach (var Custaddress in existingCustomer.Addresses.FirstOrDefault(a => a.AddressID == 5))
        {
            //Custaddress.
        }
    }

foreach 引发错误

foreach 语句不能对“EFTest.Addresses”类型的变量进行操作,因为“EFTest.Addresses”不包含“GetEnumerator”的公共定义

我想在 foreach 循环中设置子实体数据并以这样的方式更新,因为父和子都将被更新。 请把我带到正确的方向来完成这项工作。

那是因为方法 .FirstOrDefault 返回一个类型为 source 的对象,而不是一个列表:

https://msdn.microsoft.com/en-us/library/bb340482(v=vs.110).aspx

尝试:

    using (var db = new TestDBContext())
    {
        var existingCustomer = db.Customer
        .Include(a => a.Addresses.Select(x=> x.Contacts))
        .FirstOrDefault(p => p.CustomerID == 5);

        existingCustomer.FirstName = "Test Customer122";

        foreach (var custAddress in existingCustomer.Addresses.Where(a => a.AddressID == 5))
        {
            //do stuff
        }

        db.SaveChanges();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM