最初に Entity Framework (5) コードを作成しますが、コードからデータ モデルを生成するわけではありません。データ モデルを手動で同期させているだけです (思ったほど面倒ではありません)。
1対0-1の関係を築こうとしている。以下は、アドレスが 0 個または 1 個の顧客の構成例を使用したセットアップです。
編集:元の例は正しくありませんでした。顧客は 0 ~ 1 個の住所を持つことができ、住所には 1 人の顧客が含まれます。テーブルのデザインとコードの両方が更新されました。
住所 -------------- AddressId (ID) 住所テキスト CustomerId (編集: これは一意の制約を採用しています)
お客様 -------------- CustomerId (ID) 顧客名
アドレス マッピングの関連部分:
this.HasKey(t => t.AddressId);
//SEE NOTE ON THIS BELOW
//this.Property(t =>t.AddressId).
HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.HasRequired(t => t.Customer)
.WithOptional();
顧客マッピングの関連部分:
this.HasKey(t => t.CustomerId);
this.HasOptional(b => b.Address)
.WithRequired();
Customer でコメントアウトされている行に注意してください。これを含めると、次のエラーが発生します。
ReferentialConstraint の依存プロパティは、ストアで生成された列にマップされます。列: 'CustomerId'。
含めない場合は、次のようになります。
IDENTITY_INSERT が OFF に設定されている場合、テーブル 'Customer' の ID 列に明示的な値を挿入できません。
高低を検索しましたが、上記のコードが推奨されるアプローチのようです。2 つのテーブルが同じ名前のキーを共有しない限り、1 対 1 の関係をモデル化できないという漠然とした言及も見ました。
この種の関係はコードでモデル化できますか?もしそうなら、正しい構文は何ですか?