我正在实施生产者/消费者模式:
生产者
消费者(多线程)
问题
使用与生产者线程关联的上下文,使用Entity Framework Code First实现对象。
消费者线程需要他们自己的上下文。
是否可以将物化对象(每个对象实际上是一个对象图)从生产者上下文移动到消费者上下文,或者我是否必须在消费者的上下文中重新物化该对象以便在那里更新它?我该怎么做?
答案 0 :(得分:2)
我认为您想要的是以下内容:
实体框架允许您将对象重新附加到上下文跟踪图并将其视为数据库中对象的当前状态。这意味着它只会更新您在更新块中触摸的属性。
即您希望在没有事先选择更新路径的情况下关注此更新:
using (var context = new MyContext())
{
var dummy = new Test{Id= 1};
context.Tests.Attach(dummy);
dummy.Something = "Hello World";
context.SaveChanges();
}
关于此方法的重要注意事项是,您只能将实体(由唯一键定义)附加到跟踪图表一次。因此,在隔离的环境中执行此操作或仔细管理附加调用非常重要。