У меня есть система, похожая на отслеживание аудита, которая содержит следующие две сущности: сущность JobCreate
:
public class JobCreate
{
[Key] public string JobId { get; set; }
public List<AffectedEntity> AffectedEntities { get; set; }
}
и сущность AffectedEntity
:
public abstract class AffectedEntity
{
[Required]
public string JobId { get; set; }
public int Id { get; set; }
[CanBeNull] public JobCreate Job { get; set; }
}
Пока это просто нормальное отношение внешнего ключа:
modelBuilder.Entity<JobCreate>()
.HasMany(j => j.AffectedEntities)
.WithOne(a => a.Job)
.HasForeignKey(a => a.JobId)
.IsRequired(false)
.OnDelete(DeleteBehavior.Cascade);
Entity Framework генерирует внешний ключ для этого отношения. Моя проблема заключается в том, что эта система аудита управляется событиями, что означает, что она получает события, которые создают AffectedEntity
, и событие, которое создает записи JobCreate
не по порядку. Другими словами, сущность JobCreate
может еще не существовать при создании AffectedEntity
. Однако, что касается домена, это на самом деле хорошо. Так как мне смоделировать это в Entity Framework? Я хочу иметь возможность "перемещаться" по этому соединению от JobCreate
до AffectedEntity
, однако в другом направлении нет необходимости.