Привет Я ищу несколько полезных советов для моего текущего отображения. Он возвращает следующую ошибку, когда я пытался добавить миграцию. Я не слишком уверен, что я сделал неправильно, или это не то, как я должен их отобразить.
System.Reflection.TargetInvocationException: Исключение было выдано целью вызова. ---> System. Свойства навигации могут участвовать только в одном отношении.
У меня есть 3 таблицы, Manifest, ManifestToBroker, Brokers.
public class Manifest
{
public virtual ManifestToBroker ManifestToBroker { get; set; }
.......other stuff
}
public class ManifestToBroker
{
public virtual Manifest Manifest { get; set; }
public int ManifestId { get; set; }
public int? ABIFilerId { get; set; }
public int? ACASFilerId { get; set; }
public int? AMSFilerId { get; set; }
public virtual Brokers ABIBroker { get; set; }
public virtual Brokers ACASBroker { get; set; }
public virtual Brokers AMSBroker { get; set; }
}
public class Brokers
{
[StringLength(32)]
[Required(AllowEmptyStrings = false)]
public string Name { get; set; }
[StringLength(50)]
public string Description { get; set; }
[StringLength(100)]
public string Contacts { get; set; }
[Required]
public int BrokerType { get; set; }
[Required]
public bool SupportABI { get; set; }
[Required]
public bool SupportACAS { get; set; }
[Required]
public bool SupportAMS { get; set; }
public virtual ICollection<ManifestToBroker> ManifestToBrokers { get; set; } = new List<ManifestToBroker>();
}
Я поместил все отображения в ManifestToBrokerMapper для простоты.
public class ManifestToBrokerMapping : IntKeyBaseBaseEntityConfiguration<ManifestToBroker>
{
protected override void ConfigureThis(EntityTypeBuilder<ManifestToBroker> builder)
{
builder.HasKey(m => m.Id);
builder.HasOne(m => m.ABIBroker)
.WithMany(m => m.ManifestToBrokers)
.HasForeignKey(m => m.ABIFilerId);
builder.HasOne(m => m.ACASBroker)
.WithMany(m => m.ManifestToBrokers)
.HasForeignKey(m => m.ACASFilerId);
builder.HasOne(m => m.AMSBroker)
.WithMany(m => m.ManifestToBrokers)
.HasForeignKey(m => m.AMSFilerId);
builder.HasOne(m => m.Manifest)
.WithOne(m => m.ManifestToBroker)
.IsRequired();
builder.HasIndex(m => new { m.ManifestId, m.ABIFilerId }).IsUnique();
builder.HasIndex(m => new { m.ManifestId, m.ACASFilerId }).IsUnique();
builder.HasIndex(m => new { m.ManifestId, m.AMSFilerId }).IsUnique();
}
}