【发布时间】:2016-08-26 21:53:35
【问题描述】:
public class Class1
{
public Guid Class1ID { get; set; }
public string class1string { get; set; }
public virtual Class2 Class2 { get; set; }
}
public class Class2
{
public Guid Class2ID { get; set; }
public string class2string { get; set; }
}
// POST: Class1/Edit/5
// To protect from overposting attacks, please enable the specific properties you want to bind to, for
// more details see http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Edit(Guid id, [Bind("Class1ID,Class2,class1string")] Class1 class1)
{
if (id != class1.Class1ID)
{
return NotFound();
}
if (ModelState.IsValid)
{
try
{
_context.Update(class1);
await _context.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!Class1Exists(class1.Class1ID))
{
return NotFound();
}
else
{
throw;
}
}
return RedirectToAction("Index");
}
return View(class1);
}
编辑不是更改子表中的数据,而是在表中创建一个新行并更改父表中的 GUID。父表已正确编辑。
任何帮助将不胜感激。
【问题讨论】:
-
这是因为 Class2 对象的 EntityState 可能处于已添加状态。在调用 _context.Update 方法之前尝试执行 _context.Entry(class1.Class2).State = EntityState.Modified。我假设 class1.Class2 有正确的 guid 集
标签: asp.net entity-framework asp.net-core entity-framework-core