WPF多个DataContexts

时间:2015-05-29 15:22:41

标签: wpf linq-to-sql entity-framework-4

我正在编写一个非常简单的应用程序,但是我遇到了如何处理Linq to SQL DataContexts的问题,因为每次我尝试做一些我认为应该简单的事情时,我会收到一个错误,例如, you can't update entity because it was generated from different data context

数据模型

我有一个Configuration个对象,可以包含多个ConfigurationFilter并与User相关联。

ConfigurationFilter包含对FilterFilterValue

的引用

简单的例子

在我的ViewModel构造函数中,我执行以下操作:

public ViewModel() {
  using (LinqDataContext dc = new LinqDataContext()) {
    this.User = dc.User;
    this.Configuration = new Configuration{ User = this.User };
  }
}

然后,稍后,我可以编辑配置名称和描述,并且我有一个保存命令:

public void save() {
   this.Configuration.Name = this.ConfigurationName;
   this.Configuration.Description = this.ConfigurationDescription;
   using (LinqDataContext dc = new LinqDataContext()) {
      dc.Configurations.AddObject(this.Configuration);
      dc.SaveChanges();
   }
}

这将返回一些错误(我想是因为我使用的是在不同的上下文中创建的User。无论我使用EF还是linq-to-sql,错误(和语法)都不同在这种情况下,它是The EntityKey property can only be set when the current value of the property is null.

我目前的解决方案

现在,我的解决方案是每当我有一个新对象时,我只为属性而不是对象分配ID:

this.UserID = dc.User.UserID;

对于现有对象,我从新数据上下文加载旧对象,然后使用方法比较旧对象和修改对象并重新创建所有更改。 但这看起来非常愚蠢,必须有更好的方法,我不知道!!!

最好只传递原始的LinqDataContext(或创建一个静态/单一的LinqDataContext)?

0 个答案:

没有答案
相关问题