私は次の2つのクラスを持っています。「ExportSiteLog」を割り当てなくても Item は存在できますが、「ExportSiteLog」のインスタンスは「item」の単一のインスタンスに関連している必要があります。
public class Item
{
public int Id { get; set; }
public virtual ExportSiteLog Log { get; set; }
}
public class ExportSiteLog
{
public int Id { get; set; }
public virtual Item Item { get; set; }
}
エンティティ モデルの構成に Fluent API を使用していますが、これら 2 つのオブジェクトの正しい構成をまだ把握できていません。EntityTypeConfiguration ごとに個別のクラスを使用しています。
public class ItemConfig : EntityTypeConfiguration<Item>
{
public ItemConfig()
{
HasOptional(item => item.Log)
.WithRequired(export => export.Item);
ToTable("Items");
}
}
...そして、ExportSiteLog構成で次のようなことを試しました:
HasRequired(export => export.Item)
.WithOptional(item => item.Log);
(コードファースト) update-database を実行すると、もともと次のような EF エラーが発生していました。
「タイプ 'xxx.ExportSiteLog' と 'xxx.Item' の間の関連付けのプリンシパル エンドを特定できません。この関連付けのプリンシパル エンドは、リレーションシップ fluent API またはデータ注釈を使用して明示的に構成する必要があります。」
上記の EntityTypeConfigurations を実装すると、「update-database」を実行するとこのエラーが消えたように見えますが、DB 内の 2 つのテーブルでは、どちらのテーブルにも FK の「Id」列が追加されていないようです。