ho una tabella di database che non posso cambiare, che contiene dati come:Fluent NHibernate - Appiattire più righe in una singola entità
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
voglio mappare questo per la seguente struttura:
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 { ... }
i dati di cui sopra comporterebbe nei seguenti soggetti tirati:
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)
al momento ho solo bisogno di scrivi al tavolo non letto.
Sto utilizzando FluentNHibernate con AutoMapping e convenzioni.
Ho iniziato a percorrere la strada di Components ma mi sono reso conto che non era quello a cui erano destinati. Una possibile soluzione sarebbe quella di utilizzare tre viste sul tavolo, ma questo aggiunge ulteriori problemi e vorrei evitarlo, se possibile, e non riesco a capire che ci deve essere qualcosa già nel quadro per affrontare questo problema.
Se le interfacce confondono la risposta, sentitevi liberi di ometterle dalla soluzione.
non sai cosa vuoi ottenere qui; puoi spiegare perché hai raccolte di EntityA/B/C? secondo il tuo esempio, sembra che ogni UniqueId abbia esattamente una riga di dati ad essa connessi. o ci sono altre tabelle che non sono menzionate qui? –
@sJhonny Ho aggiornato la domanda – Bronumski