更新2个实体实例之间的属性

时间:2012-02-03 09:32:47

标签: c# asp.net entity-framework

假设我有2个同一实体的实例,ab

a.SomeProp = 2;
b.SomeProp = 1;

我想用a:s属性更新b

a = b;
context.SaveChanges();

a附加到上下文,b不是)

但是,值不会更新。我想我是以错误的方式做的。非常感谢任何帮助。

5 个答案:

答案 0 :(得分:1)

要么在执行复制的实体上创建方法,要么创建类似copy constructor

的方法

复制方法如下:

a.CopyFrom(b);

,其中

void CopyFrom(Entity b)
{
    a.SomeProp = b.SomeProp;
    a.SomeProp2 = b.SomeProp2;
...
}

= operator没有做你想要的。 另请注意,如果这是您想要的,则不能重载=运算符。

答案 1 :(得分:1)

如果你这样做

a = b

然后设置a指向与b相同的对象(并且丢弃指向的原始对象)。

您需要指定要更新的属性,例如:

a.SomeProp = b.SomeProp

答案 2 :(得分:1)

是的,你是。您正在用b替换您的实例a - 因此a和b都不会附加到上下文中。

你需要

a.SomeProp = b.SomeProp

答案 3 :(得分:0)

SaveChanges执行从实体框架检索的所有数据与上下文中调整后的对象之间的更新。有没有办法从上下文中获取b?使用源自上下文的对象执行相同的操作。

答案 4 :(得分:0)

我还没有测试,但你可以尝试一下。

dc.Entry(a).State = System.Data.EntityState.Detached;
dc.Entry(b).State = System.Data.EntityState.Modified;