【发布时间】:2012-06-07 16:23:49
【问题描述】:
我在使用 EF Code First 对图形结构进行建模时遇到了一些问题。我有一种情况,即我的应用程序中的许多具体对象可以是与多种边缘类型中的任何一种相关的节点。
例如,两个用户对象可能有关系(喜欢、不喜欢、相关),但每个对象都可以同样地与另一种类型的对象相关(“查看”页面、“喜欢”消息等)
为了在应用程序中对此进行建模,我使用了 GraphNode 的基类,所有可能的节点都将从该基类继承,并且每个 GraphNode 都有一个 Edge 集合。每个 Edge 都有一个 SourceNode、一个 DestinationNode 和一个 RelationshipType(用于加权)。
我知道如何将其建模为直接的数据库优先开发,其中包含一个用于 Edge 的表,该表将具有一个代理键、SourceObjectID 和 DestinationObjectID 字段,这将是来自被链接对象的 PK、SourceObjectType 和 DestinationObjectType 字段是相关对象的类型,但该站点需要 EF Code First 实现。
我已经到了使用 TPT 继承的地步,所以我有一个 GraphNode 表,其 PK 是 GraphNodeID,但它随后将其用作每个表的 PK类型,而不是它们自己的 PK,这会导致问题。
有没有人这样做过,或者任何人都可以为我指明正确的方向以找到一种方法来做到这一点?
【问题讨论】:
标签: c# .net entity-framework graph ef-code-first