这是我要解决的问题的简化版本:
有两个实体:
物品
物品 ID (PK)
其他简单属性...
WorkItem(导航属性)
工作项
物品 ID (PK)
其他简单属性...
项目(导航属性)
我需要为它创建一个项目和一个 WorkItem,并且我需要设置两个导航属性,以便两个实体可以在保存之前相互指向。
我可以这样做:
Item newItem = Item.CreateItem(0, blah,blah,blah);
service.AddToItems(newItem);
WorkItem newWorkItem = new WorkItem();
service.AddToWorkItems(newWorkItem);
//set the navigation properties
newItem.WorkItem = newWorkItem;
newWorkItem.Item = newItem;
不幸的是,在储蓄方面,这失败了。我相信 EF 在尝试设置 WorkItem 的 Item 关联时,会尝试设置 WorkItem 的主键。
有人可以告诉我实现这一目标的正确方法吗?
更新:
所以,我尝试使用继承来构建模型。模型构建并验证。
不幸的是,为我的模型添加 WCF 数据服务并尝试在浏览器中查看该服务给了我这个:
..... <m:message xml:lang="en-US">An error occurred while processing this request. </m:message>
<m:innererror>
<m:message>Navigation Properties are not supported on derived entity types. Entity Set 'app_Items' has a instance of type 'tempmodel.app_CostItem', which is an derived entity type and has navigation properties. Please remove all the navigation properties from type 'tempmodel.app_CostItem'.</m:message>
<m:type>System.InvalidOperationException</m:type>
<m:stacktrace> at System.Data.Services.Serializers.SyndicationSerializer.WriteObjectProperties(IExpandedResult expanded, ......
CostItem 是另一个实体,如 WorkItem,它派生自 Item。