を定義する方法を私は、既存のデータベーススキーマを持っている、と私は外国を使用してリンクテーブルを追加するASP.NETコアとEntity FrameworkのEntity Frameworkのコード - カスタムナビゲーションプロパティ
を使用していますただし、外部キー索引列は、標準のEF規則に準拠するものではありません。これをEFでどのように表現できますか?可能であればData Annotation属性を使用することをお勧めしますが、そうでない場合はModelBuilderの流暢なAPIを使用するのは問題ありません。
は、本質的に、この上記モデルで
[Table("widgets")]
class Widget {
[Key, Column("id")]
int Id { get; set; }
[Column("referencenumber")]
int ReferenceNumber { get; set; }
public WidgetReferenceData ReferenceData // ???? How do I express this?
}
[Table("widgetreferences")]
class WidgetReference {
[Key, Column("referencenumber")]
int ReferenceNumber { get; set; }
[Column("value")]
string Value { get;set; }
}
、Widget
はWidgetReference
テーブルに0または1関連するエントリを有していてもよく、widgets.referencenumber
データベースカラムを使用してリンク。
私がしたいのは、関連するWidgetReference(存在しない場合はnull)をロードするために、ウィジェットモデルにプロパティを追加することです。基本的に私はこのようにそれを使用することができるようにしたい:
var referenceValue = FindWidget().ReferenceData?.Value;
それは、従来の「ID」列だったら、私はどのように、EFはそれの世話をするだろうが、私は、カスタムデータベースの列とプロパティ名を持っているとして、この関係を表現する?
結果に影響するかどうかはわかりませんが、widgetreferences.referencenumber
は外部キーではなく、インデックスを持つ列であることが重要です。私たちのビジネスロジックは、ウィジェットが削除されても参照データを保持したいと考えている場合です。
私はグーグルでこれに対する答えを見つけようとしませんでしたが、 :-(
タイトルが言う、それはコードです最初に体がDBであると最初に言いましたか?あなたが足場をとった場合、スキャフォルダーはあなたの関係をどのように表していますか?(またはFKがないので気にしませんか?ウィジェットとリファレンスのx:yの関係は? –
これは最初のコードです。私はedmxマッピングファイルなどを使用していません。 ウィジェットには参照が1つ(referencecenumber列で結合)されていますが、参照は削除されるウィジェットから存続します。 –
Like https://stackoverflow.com/questions/35501552/code-first-of -ef-how-to-define-navigation-property-relationship-without-settingですか?これらのことに関する一般的な合意は、EFにFKを作成させ、それをDBから削除するように思われる。私はそれが正しい方法でラウンドされている場合、あなたはそれを変更しようとすることができます "カスケード削除の種類を設定する"ので、あなたの参照は、そのwidgetidを失う(しかし、それは反対の方法に関連しているように見える、 widgetidを持つ参照ではなくreferenceidを持っている)ウィジェットがなくなる場合 –