У меня есть 2 класса, тип A имеет один экземпляр типа B, а также набор типа B. Я пробовал различные конфигурации, но я не могу заставить его работайте правильно. Если бы вы могли объяснить мне, что я делаю неправильно, или дать мне ресурс, который будет полезен. Я улучшаюсь с этими сопоставлениями, но время от времени они выходят за пределы моего понимания. Я ограничил свои классы только важными свойствами.Свободная конфигурация для коллекции и одного свойства того же типа
Разъяснение
Там будет только когда-либо один тотализаторы, связанные с заявителем, заявитель, хотя будет находиться в коллекции заявителей, и выигрышная запись будет иметь идентификатор заполняемый в поле WinnerId, который я надеялся, что EF отобразит правильного заявителя.
Ошибка
Навигационное свойство «Тотализаторы» объявил о типе «NPlay.Common.Models.SweepstakesApplicant» был настроен с противоречивой информацией отображения.
Классы
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);
}
Edit: Обновление отображения конфигурации и ошибок. Редактировать: Исправлен заголовок, поразительно, сколько исправлений я получил. Интересно, будет ли этот сайт лучше, если люди больше времени будут отвечать на вопросы, а затем просто идут по редактированию: D, хм, это, вероятно, тоже будет отредактировано.
Возможно, я ошибаюсь, но я думаю, что там есть круговая зависимость, это может быть проблемой. – Rafa
Поначалу кажется, что так, но вот как вы настраиваете свойства навигации. Модели сами по себе твердые, я уверен, это всего лишь картография. Я думаю, что проблема заключается в том, что у меня есть один заявитель, а также их коллекция. Мне, вероятно, нужна другая настройка сопоставления, которую я потерял или неправильно сконфигурировал. – Tony
ОК, извините, в этом случае я не могу вам помочь, у меня не так много опыта работы с кодом :( – Rafa