我有 2 个类,类型 A 有一个类型 B 的单个实例以及一个类型 B 的集合。我尝试了各种配置,但似乎无法让它正常工作。如果你能向我解释我做错了什么或给我一个有用的资源。我对这些映射越来越好,但有时它们显然超出了我的理解范围。我已将我的课程范围缩小到重要的属性。
澄清
只有一个与申请人相关的抽奖活动,但申请人将位于申请人集合中,并且获胜条目将在 WinnerId 字段中填充 ID,我希望 EF 将映射到正确的申请人。
错误
在类型“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,嗯,这可能也会被编辑。