У меня есть одна таблица или доменная сущность ChargaOperation, которая сопоставлена с таблицей [ChargeOperation]
и имеет отношения многие ко многим с самим собой. Это как смещение клиентских долгов или дерева распределений (родительский уровень и 1 уровень дочерних элементов).
ChargeOperation
{
int Id,
decimal Amount,
IList<ChargeOperation> DistributedDebts // a tree of distributions using many to many mapping
}
связывает реализованную с помощью [Распределения] таблицу, которая имеет отображение в коде и отображается следующим образом:
public ChargeOperationMap()
{
Table("ChargeOperations");
Id(x => x.Id).GeneratedBy.Identity();
Map(x => x.Amount).Not.Nullable().Column("Amount");
HasManyToMany(x => x.DistributedDebts).Table("Distributions]")
.ParentKeyColumn("SourceId")
.ChildKeyColumn("SubjectId")
.Cascade.All();
}
таблица [Распределения] имеет поля:
- SourceId
SubjectId.
SourceId - это идентификатор родительского ChargeOperation.Id, а subjectId - дочерний (один из IList DistributedDebts).
Это было нормально, пока мне не пришлось добавлять время для каждой операции распределения и менять поле таблицы [Распределения] , например так:
- SourceId
- SubjectId
- TimeOfOperation
И теперь единственная возможность сделать это - создать карту распределений, разорвать отношения «многие ко многим» и создать два отношения «один ко многим».
Как я могу избежать этого и просто написать timeOfOperation в [Распределения] . (Я читаю это с целью, так что это не проблема для чтения)