我试图循环一个对象列表并在发布到SQL之前将它们设置为已修改。但我得到一个错误对象引用没有设置为对象的实例。
使用
设置单个对象实例 [BindProperty]
public Models.Ord Order { get; set; }
Order = await _context.Ord.SingleOrDefaultAsync(m => m.Id == id);
_context.Attach(Order).State = EntityState.Modified;
但这会返回错误。
[BindProperty]
public IList<OrdLn> OrderLineList { get; private set; }
OrderLineList = await _context.OrdLn.Where(o => o.OrdId == id).ToListAsync();
foreach (OrdLn p in OrderLineList)
{
_context.Attach(p).State = EntityState.Modified;
}
await _context.SaveChangesAsync();
答案 0 :(得分:0)
&#39; Q&#39;在LINQ中代表&#34;查询&#34;。 LINQ不是为了更新对象。
您可以使用LINQ查找要更新的对象,然后更新它&#34;传统上&#34;。
当您使用SingleOrDefault函数时,远程或数据库中的对象,直到您更改实体类型(更改为新类),因此您可以对实体和db操作进行更改,以便进行。
使用List功能时。对象是在应用程序的内存中,因此db之间存在关系,并且无法执行db操作操作。
所有这些返回类型都有继承自IEnumerable的接口,您应该确保理解。该接口基本上允许您在foreach语句中使用该类(在C#中)。