1

私は 2 つのクラスを持っています。タイプ A にはタイプ B の単一のインスタンスとタイプ B のコレクションがあります。さまざまな構成を試しましたが、正しく動作しないようです。私が間違っていることを説明していただけるか、役立つリソースを教えていただければ幸いです。私はこれらのマッピングで良くなっていますが、時々私の理解を超えているようです. クラスを重要なプロパティだけに絞り込みました。

明確化

応募者に関連する懸賞は 1 つだけですが、応募者は応募者のコレクションに配置され、当選したエントリには、EF が正しい応募者にマップすることを望んでいた WinnerId フィールドに ID が入力されます。

エラー

タイプ「NPlay.Common.Models.SweepstakesApplicant」で宣言されたナビゲーション プロパティ「Sweepstakes」が、競合するマッピング情報で構成されています。

クラス

public SweepstakesConfiguration()
{
    Property(c => c.Id).HasColumnName("SweepstakesId");

    HasMany(c => c.Applicants)
        .WithRequired(c => c.Sweepstakes)
        .HasForeignKey(c => c.SweepstakesId);

    HasOptional(c => c.WinningApplicant)
        .WithRequired(c => c.Sweepstakes)
        .Map(c => c.MapKey("WinnerId"));
}

public class SweepstakesApplicant
{
    public long Id { get; set; }        
    public int SweepstakesId { get; set; }
    public virtual Sweepstakes Sweepstakes { get; set; }
    public int BuyerId { get; set; }
    public virtual Buyer Buyer { get; set; }
    public int AgentId { get; set; }
    public virtual Agent Agent { get; set; }
}

マッピング

public SweepstakesConfiguration()
{
    Property(c => c.Id).HasColumnName("SweepstakesId");

    HasOptional(c => c.WinningApplicant)
        .WithRequired(c => c.Sweepstakes)
        .Map(c => c.MapKey("WinnerId"));
}

public SweepstakesApplicantConfiguration()
{
    Property(a => a.Id).HasColumnName("SweepstakesApplicantId");

    HasRequired(a => a.Sweepstakes)
            .WithMany(s => s.Applicants)
            .HasForeignKey(a => a.SweepstakesId)
            .WillCascadeOnDelete();

    HasRequired(c => c.Sweepstakes)
        .WithOptional(c => c.WinningApplicant)
        .Map(c => c.MapKey("SweepstakesId"));

    HasRequired(a => a.Buyer)
        .WithMany(b => b.SweepstakesApplications)
        .HasForeignKey(a => a.BuyerId);

    HasRequired(a => a.Agent)
        .WithMany()
        .HasForeignKey(a => a.AgentId);
}

編集: マッピング構成とエラーを更新しました。編集: タイトルをさらに修正しました。私が受け取った編集の数は驚くべきものです。人々が質問に答えるのにもっと時間を費やしてから編集に時間を費やしたら、このサイトはより良くなるのだろうか:D、うーん、これもおそらく編集されるでしょう.

4

2 に答える 2

0

これが私が最終的にたどり着いた構成です。

    public SweepstakesConfiguration()
    {
        Property(c => c.Id).HasColumnName("SweepstakesId");

        HasOptional(c => c.WinningApplicant)
            .WithMany()
            .HasForeignKey(c => c.WinnerId);
    }

    public SweepstakesApplicantConfiguration()
    {
        Property(a => a.Id).HasColumnName("SweepstakesApplicantId");

        HasRequired(a => a.Sweepstakes)
            .WithMany(s => s.Applicants)
            .HasForeignKey(a => a.SweepstakesId)
            .WillCascadeOnDelete();

        HasRequired(a => a.Buyer)
            .WithMany(b => b.SweepstakesApplications)
            .HasForeignKey(a => a.BuyerId);

        HasRequired(a => a.Agent)
            .WithMany()
            .HasForeignKey(a => a.AgentId);
    }
于 2013-11-12T15:04:39.087 に答える