【问题标题】:can EF update exisiting row with a newly constructed entity?EF 可以用新构建的实体更新现有行吗?
【发布时间】:2013-04-17 23:15:31
【问题描述】:

我在我的应用程序中使用 EF。

我想添加和保存实体。

我在我的应用程序中创建了一个新的实体对象并设法将它添加到数据库中。

现在我想更新一个现有的实体。

我从数据库中获取了一个现有实体,

在 UI 中呈现它

现在我想反映用户的变化。

我是否必须再次从数据库中获取实体并将值一一分配给它的属性?

我尝试创建一个新实体并将其保存到数据库。它没有显示错误,但它没有反映在数据库中。

【问题讨论】:

  • 请发布您的代码。

标签: c# asp.net-mvc entity-framework-4


【解决方案1】:

假设您有一个发布模型对象 model 的表单和一个具有工作数据库上下文 _context 的控制器,您可以使用以下代码更改现有实体(属性可能会有所不同):

[HttpPost]
public ActionResult SubmitForm(MyViewModel model)
{
    // Retrieve existing object
    var someObject = _context.Resources.OfType<MyEntityType>.Where
        (o => o.Id == model.Id).SingleOrDefault;

    // Assign new values to entity
    someObject.SomeProperty = model.SomeProperty;
    someObject.SomeOtherProperty = model.SomeOtherProperty;

    // Commit
    _context.SaveChanges();
}

更新:或者,请参阅this answer,了解有关如何附加新对象代替现有对象的详细信息。

【讨论】:

  • 我知道这种方式。请参阅:Do I have to get the entity again from the DB and assign values to its properties, one by one? 我想知道是否有其他方法可以让我使用新创建的 EF 进行更新?
  • @DbContext APIObjectContext 有什么区别?我什么时候使用它们?
  • 请看我下面的问题:stackoverflow.com/questions/16085654/…
猜你喜欢
  • 2022-10-18
  • 2021-10-28
  • 2018-05-23
  • 2011-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
相关资源
最近更新 更多