从MVC视图将对象附加到EF 4上下文?

时间:2011-03-10 18:19:29

标签: asp.net-mvc entity-framework

我不确定这是否有意义,但这是一个例子。

我有一个Category对象,我的服务交给Controller,后者使用AutoMapper创建一个CategoryViewModel。把它交给视线,送给客户。

现在,当回发后,AutoMapper会从发回的模型中创建一个类别,然后将其交给服务,该服务将其提供给存储库以保留到数据库。

我的问题是,这样做的正确方法是什么?我假设对象在回发时是一个分离的对象,我需要将它附加到上下文,将其标记为脏并保存更改?

2 个答案:

答案 0 :(得分:3)

基本上有两种方式来更新实体:

  1. 将实体附加到上下文,使用ObjectStateManager.ChangeObjectState Method将其标记为已修改,调用ObjectContext.SaveChanges Method
  2. 从数据库加载原始实体,使用ObjectContext.ApplyCurrentValues<TEntity> Method将更改应用于原始实体,致电ObjectContext.SaveChanges Method
  3. 每个人都有自己的优点和缺点。例如,第一个不进行往返以获取原始实体但是无法解决并发问题以及尝试更新实体的每个属性,而第二个在使用乐观并发时效果最佳,仅更新已更改的属性,但它确实为Db做了额外的旅行以获得原始实体。

答案 1 :(得分:-1)

“我假设对象在回发时是一个分离的对象,我需要将它附加到上下文,将其标记为脏并保存更改?”

此页面上的任何一个链接都应该有所帮助:

http://www.google.com/search?rlz=1C1CHFX_enUS410US410&sourceid=chrome&ie=UTF-8&q=working+with+dicsonnected+entities+entity+framework