У меня есть таблица базы данных, которую я не могу изменить, которая содержит такие данные, как:
FooTable
Id | EntityAUniqueId | EntityBUniqueId | EntityCUniqueId
============================================================
1 | A1 | B1 | C1
2 | A1 | B1 | C2
3 | A1 | B2 | C3
4 | A1 | B2 | C4
5 | A2 | B3 | C5
6 | A2 | B3 | C6
7 | A2 | B4 | C7
8 | A2 | B4 | C8
Я хочу сопоставить это со следующей структурой:
interface IEntityA
{
string UniqueId { get; }
IEnumerable<IEntityB> { get; }
}
interface IEntityB
{
string UniqueId { get; }
IEnumerable<IEntityC> { get; }
}
interface IEntityC
{
string UniqueId { get; }
}
class EntityA : IEntityA { ... }
class EntityB : IEntityB { ... }
class EntityC : IEntityC { ... }
Приведенные выше данные приведут к удалению следующих объектов:
EnityA(A1)
|-EnityB(B1)
| |-EntityC(C1)
| |-EntityC(C2)
|-EnityB(B2)
|-EntityC(C3)
|-EntityC(C4)
EnityA(A2)
|-EnityB(B3)
| |-EntityC(C5)
| |-EntityC(C6)
|-EnityB(B4)
|-EntityC(C7)
|-EntityC(C8)
В настоящее время мне нужно только написать в таблицу, а не читать.
Я использую FluentNHibernate с AutoMapping и соглашениями.
Я начал идти по дороге Компонентов, но понял, что это не то, для чего они были предназначены. Одним из возможных решений было бы использование трех представлений на столе, но это добавляет дополнительные проблемы, и я хотел бы избежать этого, если это возможно, и я не могу не чувствовать, что в рамках уже должно быть что-то для решения этой проблемы.
Если интерфейсы запутывают ответ, не стесняйтесь опускать их из решения.