Entity Frameworkのアソシエーション

Entity Frameworkで親子関係のアソシエーションを張ろうと思ったら張れなかった話です。対象テーブルのフィールドは下記。

  • 明細データ
主キー 明細番号 オートナンバー
伝票番号  
行番号  
商品コード  
  • 伝票データ
主キー 伝票番号 オートナンバー
得意先コード  

今回は明細データ単独で処理したいこともあるので、行番号ではなく明細番号を主キーにして伝票番号で伝票データと繋げます。これをEntity Frameworkでアソシエーション付けて触ろうと設定したのですが、伝票番号同士で設定ができないのです。まぁ明細データ側の伝票番号がエンティティキーでは無いので当然といえば当然なんですが、なぜか後輩は設定できたと。

確認したところバージョンが関係していたようでFrameworkのバージョンが自分は3.5、後輩は4.0でした。
ツールボックスからアソシエーションを選択、2つのテーブルに紐付け、表示された線をダブルクリックで表示されるダイアログが微妙に違っていました。

  • 3.5

f:id:redseen:20140206171745j:plain

  • 4.0

f:id:redseen:20140206171731j:plain

プリンシパルキーと紐付けできるのが「依存キー」と「依存プロパティ」と違っており、依存プロパティは全ての項目が選択可能に対し、依存キーはエンティティキーのみの選択しかできません。おそらく外部キーつけろよで話が終わるのだと思いますが、うちの会社はデータベースをただの入れ物としてしか使わず、外部キー文化がありません。今回はFrameworkの制約があるので仕方なくこのまま行くことにします。