時々独立しており、クラスで私は親クラスComponentDesign
ありますEntity Frameworkの一対一の
public class ComponentDesign
{
public string Name { get; set; }
public virtual JobFile DesignFile { get; set; }
public int? DesignFileId { get; set; }
public Pdf PdfFile { get; set; }
public int? PdfFileId { get; set; }
public JobFile SealedPdfFile { get; set; }
public int? SealedPdfFileId { get; set; }
public int Id { get; set; }
public int JobId { get; set; }
}
そして(Pdf
サブクラスとなっている)子クラスJobFile
:
public class JobFile
{
public int ID { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public ComponentDesign ComponentDesign { get; set; }
public int? ComponentDesignId { get; set; }
public int? JobId { get; set; }
}
を
これらのクラスは、Entity Frameworkを使用してリレーショナルデータベースに格納されます。私は関係の両側にナビゲーションプロパティを持ちたいので、componentDesign.PdfFile
またはjobFile.ComponentDesign
とすることができます。
)ComponentDesign
におけるタイプJobFile
の各プロパティはオプションであり、JobFile will only ever belong to one
ComponentDesign . However, a
JobFile may be free-standing, not belonging to any
ComponentDesign (so
jobFile.ComponentDesign`はヌルであろう。
私はFluent APIを使用してこの関係を設定する方法に苦しんでいます。それは1対1です。関係の両側にナビゲーションプロパティを持たせることは可能ですか? JobFile
は自立している可能性があるので(jobFile.ComponentDesign
は必ずしも関連するとは限りません)、JobFile
はComponentDesign
に属しています。私は私が来ていると感じ最も近いがこれです:
modelBuilder.Entity<ComponentDesign>()
.HasOptional(componentDesign => componentDesign.DesignFile)
.WithRequired(jobFile => jobFile.ComponentDesign);
しかし、これはjobFile.ComponentDesign
は必ずしもそうではありませんこれは、必要とされていることを示すために私には思えます。私はいくつかのかなりの移行を生成するので、それを試してみることを躊躇しているので、私は入力を最初に取得したい。この状況で私のFluent APIの設定はどのように見えるのですか? >JobFile
=オプション -
ComponentDesign
:私は関係を理解ちょうどそのよう
2つのオブジェクトクラスの間でEntity Frameworkでリレーションシップを作成するには、データ型と言うと、クラスワードでバーチャルワードを使用できます。私はあなたの問題の仮想プロパティで結果を見つけることができると確信しています。 –