首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EF CF中的有向图建模

EF CF中的有向图建模
EN

Stack Overflow用户
提问于 2012-06-08 00:23:50
回答 1查看 211关注 0票数 2

我在使用EF Code First建模图形结构时遇到了一些问题。我有一种情况,在我的应用程序中,许多具体的对象可以是与许多类型的边中的任何一种相关的节点。

例如,两个用户对象可以具有关系(喜欢、不喜欢、相关),但是每个用户对象都可以等同地与另一类型的对象(“已查看”页面、“喜欢”消息等)相关。

为了在应用程序中对此进行建模,我使用了一个GraphNode基类,所有可能的节点都将从该基类继承,并且每个GraphNode都有一个边集合。每条边都有一个SourceNode、一个DestinationNode和一个RelationshipType (用于加权)。

我知道如何将此建模为直接的数据库优先开发,与边缘的表将有一个代理键,SourceObjectID和DestinationObjectID字段将是从被链接的对象的PKs,SourceObjectType和DestinationObjectType字段是相关的对象的类型,但该网站需要EF代码优先实施。

我已经达到了使用TPT继承的程度,所以我得到了一个带有PK的GraphNode表,这个PK是GraphNodeID,但是它使用它作为具体类型的每个表的PK,而不是它们自己的PKs,这会导致问题。

有没有人这样做过,或者有人能给我指出正确的方向来做这件事吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-08 21:12:53

正如您已经发现的,继承并不适合此场景。

其他ORM,如NHibernate,提供了对“异构关联”的开箱即用支持。因为EF没有,所以我的解决方案是在“服务”层处理这个问题(即在控制器/视图模型和DbContext之间)。

我所做的是创建一个抽象,它允许我存储和检索与任何实体相关联的元素(在我的例子中是Notes或Comments)。我通过手动存储被引用对象的实体类型和id来做到这一点。

这很简单,除非您想将元素与非持久实体相关联(我在DbContext中使用一些回调来处理)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10935861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档