2

私は次の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」列が追加されていないようです。

4

0 に答える 0