我有一个数据库表,我不能改变包含了像数据:功能NHibernate - 拼合多个行成一个单一的实体
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和约定。
我开始走下组件的道路,但意识到这不是他们的目的。一种可能的解决方案是在桌面上使用三个视图,但这会增加额外的问题,如果可能的话,我希望避免它,并且我不能帮助感觉框架中必须有某些东西来解决这个问题。
如果接口混淆了答案,请随时将其从解决方案中省略。
不确定你想在这里实现什么;你能解释为什么你有EntityA/B/C的集合吗?根据你的例子,似乎每个UniqueId只有一行数据连接到它。还是有其他表格在这里没有提到? – 2011-04-11 07:41:26
@sJhonny我已经更新了这个问题 – Bronumski 2011-04-12 17:20:11