コードを使用まず、Donor
を表すモデルを作成しました。私はすべてのDonor
オブジェクトを格納するテーブルを生成するために移行を使用しました。私は注釈を使用して、私のモデルの2つのプロパティー、すなわちName
とTeamId
の複合である主キーを指定しました。Entity Frameworkコードファーストプライベートキーの一部として外部キーを使用
HourlySnapshots
というモデルにナビゲーションプロパティを追加しました。これは、1対多の関係を表すICollection<HourlySnapshot>
です。 (HourlySnapshot
は私が作成した別のドメインモデルです)。マイグレーションを実行し、HourlySnapshot
オブジェクトをすべて格納する別のテーブルを生成しました。期待通りに、それはName
とTeamId
で構成される外部キーを格納する私のモデルになかった2つの列を追加しました。
HourlySnapshotsテーブルを初期化するために、プライマリキーとして使用されるオブジェクトに従来のId
プロパティを追加しました。私がしようとしているのは、Id
列の外部キー(Name
とTeamId
のコンポジット)とTimestamp
と呼ばれるHourlySnapshot
という別のプロパティのコンビネーションに、HourlySnapshotsテーブルの主キーを切り替えることです。つまり、3つの列Name
,TeamId
、およびTimestamp
の複合体にします。
コードファーストでこれを行う方法はありますか?私はテーブル定義を開いてそこで編集することで簡単にこれを行うことができますが、コード・ファーストのワークフローを遵守して、すべての変更がマイグレーションに含まれるようにしたいと思います。
あなたがモデルコードを含んでいれば、人々が手助けしやすくなります。次に、[サロゲートキー](https://en.wikipedia.org/wiki/Surrogate_key)を使用すると、これがはるかに簡単になります。しかし、自然キーが必要な場合は、[annotations](https://msdn.microsoft.com/en-us/library/jj591583(v=11113).aspx)または[fluently](を介してEFで複合キーを指定することができますhttps://msdn.microsoft.com/en-us/library/jj591617(v=vs.113).aspx)。 –