我有一个父子对象。根据父对象中的值更改子对象的表。因此,例如,如果父对象具有引用“01”,那么它将在下表“Child01”中查找,而如果引用是“02”,则它将在表“Child02”中查找。所有子表都与列数/名称/等相同。
我的问题是,如何判断Fluent Nhibernate或nhibernate哪个表是唯一的,并且可以引用许多不同的子表?
我查看了Fluent中的IClassConvention,但这似乎只在创建会话时调用,而不是每次创建对象时调用。
答案 0 :(得分:1)
我发现只有两种方法可以做到这一点。
正如statichippo所说,我可以使用一个basechild对象并拥有多个子对象。由于数据库大小和动态表的数量,这不是一个真正有效的选项。
我的两个解决方案都不是特别满意,但POCO似乎是解决我问题的最好方法。
答案 1 :(得分:0)
NHibernate旨在成为对象关系映射器。听起来你正在做更多的脚本风格,并希望映射你的数据而不是以OOP方式工作。
听起来你有类层次结构的元素。 发声就像你试图在你的代码中创建(然后相应地映射)是不同类型的孩子的层次结构:
BaseChild
- > SmartChild
- > DumbChild
每个孩子要么聪明或愚蠢,但由于他们都有FirstName,LastName,Age等,所以他们都是定义这些的BaseChild类的实例。唯一的区别可能是SmartChild有一个IQ而DumbChild有一个FavoriteFootballTeam(这只是一个例子,当然不会对任何人冒犯;)。
NHibernate会让你以多种方式映射这种关系。可能有1个表包含所有类或(在您的情况下它听起来像你想要的),每个类一个表。
我了解这个问题/您在寻找什么?