我试图找到一种合适的模式来模拟从几个表到一个公用表的一对多关系。
EntityA、EntityB等实体有一个或多个GenericInfo。
选项1:这些实体是不同的,所以我不能使用超级表来模拟关系,比如
选项 2:我不想通过从 GenericInfo 表中删除外键约束来失去参照完整性。
选项3:我目前正在使用关联表进行关系映射。
我不喜欢这个解决方案,因为必须在数据库中创建太多表,其全部目的是保留链接/关系。
选项4:我能想到的另一种方法是创建一个像这样具有单个 Id 属性的映射表,
我喜欢您的专家意见和意见。
谢谢,
更新
瓦塞克,感谢您的评论。
我试图解决的问题是:如何为公开对象集合的接口实现建立对象关系映射?
我们为 OR 映射使用每个类策略一个表。因此,示例中的每个表都是从一个类映射的。假设我们有以下类型定义和表格(很遗憾我不能在这里发布图表)
公共接口 IGenericInfoProvider
{
GenericInfo [ ] GenericInfoArray {get;set;}
}
公共类 BaseClassForA {} ---------------------------------------------表 BaseEntityForA
公共类 BaseClassForB {} ------------------------------------------- -- 表 BaseEntityForB
公共类 ClassA : BaseClassForA, IGenericInfoProvider {} --- 表 EntityA
公共类 ClassB : BaseClassForB, IGenericInfoProvider {} --- 表 EntityB
公共类 GenericInfo {} ------------- --------------------------------------- 表 GenericInfo
我正在尝试对 EntityA/EntityB 和 GenericInfo 之间的一对多关系进行建模。这种关系在我们的领域模型中很常见。
Option1不被考虑,因为这会导致创建一个超级表来包含许多表中的所有 id,并且它在 OO 世界中没有任何意义。
由于参照完整性,选项 2 是不可接受的
。
Option3是我目前使用的模式。
我正在考虑Option4,但不确定它是否是正确方向的方法。