Asp.net mvc 具有复杂关系的实体框架
我有一个数据集,它是许多独立的对象(人、财产、工作),每个对象都与另一个对象相关(注) 关系由外键(个人、属性或作业中的主键)和一个简单的varchar字段类型构成 所以注释看起来基本上是这样的: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一起使用时,人员可能会有工作说明。稍后
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映射到视图