EF可以用新构建的实体更新现有行吗?

时间:2013-04-17 14:35:05

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

我在申请中使用EF。

我想添加和保存实体。

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

现在我想更新现有实体。

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

在UI中展示

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

我是否必须从数据库中再次获取实体并逐个为其属性分配值?

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

1 个答案:

答案 0 :(得分:0)

假设您有一个发布模型对象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以获取有关如何附加新对象以代替现有对象的详细信息。