假设我有2个同一实体的实例,a
和b
a.SomeProp = 2;
b.SomeProp = 1;
我想用a
:s属性更新b
:
a = b;
context.SaveChanges();
(a
附加到上下文,b
不是)
但是,值不会更新。我想我是以错误的方式做的。非常感谢任何帮助。
答案 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)
你需要
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;