2015-07-19 50 views
1

我有一个数据集,它是一些独立的对象(人,财产,工作),并且每个都与另一个对象(注释)有关。具有复杂关系的实体框架

这种关系是由一个外键(主要是人,财产或工作)和一个只是一个varchar字段的类型组成的。

因此请注意基本上是这样:

Id 
RecordId(foreign key) 
RecordType(person, propery, job as varchar) 
Note Detail 

面临的问题是,每个主要对象使用的EntityFramework时包括这个人可能有工作笔记可能具有相同的密钥左右。我可以稍后用一个RecordType =='XYZ'子句来处理这个问题,我觉得它很混乱。可悲的是,包括缺乏'包括在哪里'的能力。

任何人都可以提出一种替代方法吗?

回答

0

我有类似的问题。一种解决方案是有一个表每个层次关系。您最终得到一个Note(基类)和PersonNote,PropertyNote等。奇怪的是,EF需要为每种类型的引用添加一个字段,因此除了现有的RecordId之外,您的表还需要RecordId_1,RecordId_2等字段。如果您没有使用Code First生成数据库,这有点不直观。

我使用的另一个解决方案是在db中创建视图,进行所需的过滤,将注释和源记录相结合,然后将EF映射到视图。