これは私が解決しようとしている問題の単純化されたバージョンです:
2つのエンティティがあります:
アイテム
ItemID(PK)
その他の単純なプロパティ...
WorkItem(ナビゲーションプロパティ)
WorkItem
ItemID(PK)
その他の単純なプロパティ...
アイテム(ナビゲーションプロパティ)
アイテムとそのワークアイテムを作成する必要があります。また、保存する前に、2つのエンティティが相互にポイントできるように両方のナビゲーションプロパティを設定する必要があります。
これは私ができることです:
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のアイテムの関連付けを設定しようとすると、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は、Itemから派生するWorkItemのような別のエンティティです。