Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 具有复杂关系的实体框架_Asp.net Mvc_Entity Framework_Tsql - Fatal编程技术网

Asp.net mvc 具有复杂关系的实体框架

Asp.net mvc 具有复杂关系的实体框架,asp.net-mvc,entity-framework,tsql,Asp.net Mvc,Entity Framework,Tsql,我有一个数据集,它是许多独立的对象(人、财产、工作),每个对象都与另一个对象相关(注) 关系由外键(个人、属性或作业中的主键)和一个简单的varchar字段类型构成 所以注释看起来基本上是这样的: Id RecordId(foreign key) RecordType(person, propery, job as varchar) Note Detail 所面临的问题是,每个主要对象可能都有相同的键,因此在将entityframework与include一起使用时,人员可能会有工作说明。稍后

我有一个数据集,它是许多独立的对象(人、财产、工作),每个对象都与另一个对象相关(注)

关系由外键(个人、属性或作业中的主键)和一个简单的varchar字段类型构成

所以注释看起来基本上是这样的:

Id
RecordId(foreign key)
RecordType(person, propery, job as varchar)
Note Detail
所面临的问题是,每个主要对象可能都有相同的键,因此在将entityframework与include一起使用时,人员可能会有工作说明。稍后,我可以使用where-RecordType=='XYZ'子句对其进行过滤,我觉得这很混乱。遗憾的是,include缺少“includewhere”的功能


有谁能建议一种替代方法吗?

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


我使用的另一种解决方案是在数据库中创建视图,执行所需的过滤,将注释和源记录组合起来,然后将EF映射到视图。

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

我使用的另一个解决方案是在数据库中创建视图,执行所需的过滤,将注释和源记录组合起来,然后将EF映射到视图