我已经做了一些谷歌搜索,但我还没有找到解决方案,甚至没有找到我的问题的明确答案。
问题很简单。我想为动态命名/创建的对象的每个实例动态创建一个表。然后每个表将包含特定于对象的记录。我知道这本质上是一种反模式,但这些表理论上可能会变得非常大,因此将所有数据放在一个表中可能会导致性能问题。
一个更具体的例子:
我有一个包含事务集合的基类/接口 ACCOUNT。对于使用我的软件的每家公司,我都会创建一个新的具体版本的类,BOBS_SUB_SHOP_ACCOUNT 或 SAMS_GARAGE_ACCOUNT 等。所以类的标识值是类名,而不是类中的字段。
我正在使用 C# 和 Fluent nHibernate。
所以我的问题是:
- 这有意义还是我需要澄清更多?(或者我是否正在尝试做一些我真的不应该做的事情?)
- 这种模式有名字吗?
- nHibernate 支持这个吗?
- 您知道我可以阅读的有关该模式的任何文档吗?
编辑:我想了更多,我意识到我真的不需要动态对象。我所需要的只是一种通过 NHibernate 将具有某些标识符的对象绑定到表的方法。例如:
//begin - just a brain dump
public class Account
{
public virtual string AccountName { get; set; }
public virtual IList Stuff { get; set; }
}
... somewhere else in code ...
//gets mapped to a table BobsGarageAccount (or something similar)
var BobsGarage = new Account{AccountName="BobsGarage"};
//gets mapped to a table StevesSubShop(or something similar)
var StevesSubShop = new Account{AccountName="StevesSubShop"};
//end
这应该足以满足我的需要,假设 NHibernate 允许它。我试图避免这样一种情况,即如果帐户表上出现大量交易,一张巨大的表就会被击败。如果所有帐户都在一张桌子上……那可能很难看。
先感谢您。