我创建了一个使用 Asp.net、Entity Framework 和 Windows Workflow Foundation 的应用程序,一切都按预期工作。
我的 asp.net 页面应该启动一个工作流,该工作流执行并更新从页面传递到工作流的实体。一切正常:我使用工作单元模式在 asp.net 和 WWF 之间共享上下文,并且我的实体在工作流期间成功更新......除了在我的实体中建模的字段作为对另一个实体的引用。
假设这种情况。主实体称为 Item,具有称为 Status 的属性,该属性是另一个称为 Status 的实体的外键。当我创建一个项目时,我只是用常见的语法来创建它,比如
Item i = new Item();
然后我创建对 Status 实体的引用,如下所示:
i.StatusReference.EntityKey = new System.Data.EntityKey("myEntities.StatusSet", "idStatus", State);
其中 State 是在工作流程步骤中硬编码的整数值。
每当我尝试更新此实体(第一项)时,我都会按照以下步骤操作:a)我从上下文中检索实体(一个新实体,为以下事务构建为工作单元),使用:
Item i = (from item in ctx.ItemsSet where item.idItem == itemID select item).FirstOrDefault();
然后将实体附加到我的上下文中。EntityState 处于未更改状态
b)我像以前一样更新状态参考:
i.StatusReference.EntityKey = new System.Data.EntityKey("myEntities.StatusSet", "idStatus", State);
c) 我在上下文中保存更改,例如:ctx.SaveChanges();
使用 vs2008 调试器,我可以看到更新的实体以及保存更改的时间......我看到所有属性都已更改(modifiedDate、itemName 和其他道具),但实体引用仍指向原始属性。
谁能给我一些帮助?!