我正在开发一个查看由Mirth Connect v3创建的数据库的项目。
在此版本中,表格是在运行时根据创建的频道创建的。
例如,如果我创建一个新频道,它会在具有唯一ID的表中创建一个条目。然后,使用该id创建一组表,并将该id添加到名称的末尾。即对于id为8的通道,创建一个名为d_ms8(以及其他)的表。
所有这些表(d_ms *)都具有相同的结构。
我想知道的是,是否有办法在Fluent NHibernate中映射此类事物。
public class MapChannelStats : ClassMap<ChannelStatsObj>
{
public const String TableName = "d_ms8";
public MapChannelStats()
{
Table(TableName);
Id(x => x.MetadataID).Column("metadata_id");
Map(x => x.ServerID).Column("server_id");
Map(x => x.Errored).Column("error");
Map(x => x.ErroredLifetime).Column("error_lifetime");
Map(x => x.Filtered).Column("filtered");
Map(x => x.FilteredLifetime).Column("filtered_lifetime");
Map(x => x.Received).Column("received");
Map(x => x.ReceivedLifetime).Column("received_lifetime");
Map(x => x.Sent).Column("sent");
Map(x => x.SentLifetime).Column("sent_lifetime");
}
}
谢谢,
布鲁斯。
答案 0 :(得分:0)
您要问的是一件困难的事情,因为我认为您无法在运行时更改表的名称。但是,如果您改变方法,应该有一些可能性,例如:
您可以创建一个列来指定租户ID,而不是为其创建整个表。然后,您可以专门为此列设置过滤器(reference),您可以这样更改:
Session.EnableFilter("tenant-filter").SetParameter("TenantId", "2");
或者您可以为租户创建一个数据库并使用Boot.Multitenancy之类的组件。