I have two classes RemittanceClass and RemittanceStatus.
Each RemittanceStatus is related to one RemittanceClass and in RemittanceClass there is a CurrentStatus navigation property and list of HistoryStatuses navigation collection.
(I use ABP framework by the way)
public class RemittanceClass : FullAuditedAggregateRoot<Guid>
{
public RemmitanceType Type { get; set; }
public string SerialNumber { get; set; }
public double Amount{ get; set; }
public double TotalAmount { get; set; }
public Guid? SenderId { get; set; }
public Guid RecieverId { get; set; }
public Guid CurrentStatusId { get; set;}
public RemittanceStatus? CurrentStatus { get; set; }
public ICollection<RemittanceStatus> HistoryStatus { get; set; } = new List<RemittanceStatus>();
}
public class RemittanceStatus : AuditedAggregateRoot<Guid>
{
public RemittanceClass Remittance { get; set; }
public Guid RemittanceId { get; set; }
public DateTime StatusDate { get; set; }
public Status Status{ get; set; }
}
I tried to configure this type of relation like this:
builder.Entity<RemittanceClass>(builder =>
{
builder.ToTable(RemittanceConsts.DbTablePrefix + "Remittances", RemittanceConsts.DbSchema);
builder.ConfigureByConvention(); // Auto configure for base class props
builder.HasMany(Remittance => Remittance.HistoryStatus)
.WithOne(status => status.Remittance)
.HasForeignKey(status => status.RemittanceId);
builder.HasOne(Remittance => Remittance.CurrentStatus)
.WithOne(status => status.Remittance)
.HasForeignKey<RemittanceStatus>(status => status.RemittanceId);
});
but it didn't work - I got this error in migration:
Entity 'RemittanceClass' has a global query filter defined and is the required end of a relationship with the entity 'RemittanceStatus'. This may lead to unexpected results when the required entity is filtered out. Either configure the navigation as optional, or define matching query filters for both entities in the navigation. See https://go.microsoft.com/fwlink/?linkid=2131316 for more information. The foreign key property 'RemittanceStatus.RemittanceId1' was created in shadow state because a conflicting property with the simple name 'RemittanceId' exists in the entity type, but is either not mapped, is already used for another relationship, or is incompatible with the associated primary key type.
And this error occurred when updating the database:
Introducing FOREIGN KEY constraint 'FK_HaramRemittanceStatuses_HaramRemittances_RemittanceId1' on table 'HaramRemittanceStatuses' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints