我正致力于重建客户端软件,他们希望尽可能保持数据库不被修改。
我得到了一张桌子,他们收集不同公司的用户和订单,没有大问题,但他们为多个实体做了这样的转折。
例如,表格如下所示:
我们说他们有像Project和Workflow这样的实体,然后Type列为项目的“ P ”,工作流的“ W ”。因此ID上是项目或工作流标识的ID。 UserID始终是User实体的外键,Index是使用此Project / Workflow时用户的顺序。 CompanyID是公司拥有的项目或工作流实体。
我试图搜索谷歌这个,但我什么也没想到。
我想要的是在模板实体地图上有两个集合说StandardProjectUsers和StandardWorkflowUsers,他们应该从具有当前公司的用户和索引的正确实体中收集它们。
这是否可以使用流利的nhibernate?
答案 0 :(得分:2)
关于如何操作的好文章:http://www.philliphaydon.com/2011/08/fluent-nhibernate-table-inheritance-discriminators/
您正在寻找table-per-hierarchy
策略。
简而言之,您使用:
public class BaseClassMap : ClassMap<BaseClass>
{
public BaseClassMap()
{
DiscriminateSubClassesOnColumn("Type");
...
}
}
public class WorkflowMap : SubclassMap<Workflow>
{
public WorkflowMap()
{
DiscriminatorValue("W");
...
}
}
public class ProjectMap : SubclassMap<Project>
{
public ProjectMap()
{
DiscriminatorValue("P");
...
}
}