我正在将旧的 ASP 应用程序迁移到现代 .NET 版本,以减少我们正在研究的 .NET 4.0 实体框架的开发时间。然而,我们似乎在这个问题上遇到了障碍。
给定的是我们数据库的一小部分:一个表 OBJECT,其中包含汽车列表及其各自的属性。我们还有一个表 OBJECT_OPTIONS,其中包含 OBJECT 中给定汽车的选项、附件和标准设备列表。这三种类型都具有相同的字段,因此存储在同一个表中。ncopt_type 列用于区分不同的列表。可能的值为:“opt”、“acc”和“sta”。表 OBJECT_OPTIONS 通过 ncopt_obj_id 链接到 OBJECT,ncopt_obj_id 表示表 OBJECT 中的唯一汽车 (obj_id)。
我们的目标是为 OBJECT 实体提供链接到不同 OBJECT_OPTIONS 列表的 3 个属性: - 属性 OPTIONS - 属性附件 - 属性 STANDARDEQUIPMENT
我们已经通过继承模型尝试了不同的教程和演练,但没有成功创建可构建的模型。
从技术上讲,我们所做的是:
- 创建实体 OBJECT
- 创建实体 OBJECT_OPTIONS,使其抽象
- 添加实体 OPTION、ACCESSORY 和 STANDARD_EQUIP 均使用基本类型 OBJECT_OPTIONS
- 在 ncopt_type = '...' 上向所有三个表添加条件
- 向 OBJECT 添加 3 个导航属性,全部链接到继承实体之一:OPTIONS、ACCESSORIES 和 STANDAARD_EQUIPMENT
在这个设置过程中出现了一堆错误,但我们最终得到了这个:
错误 3032:从第 250、286 行开始映射片段时出现问题:EntityTypes NCO.Model.OPTION、NCO.Model.ACCESSOIRE、NCO.Model.STANDAARD_EQUIP 正在映射到表 OBJECT_OPTIES 中的相同行。映射条件可用于区分这些类型映射到的行。
但是,所有三个对象都存在一个条件。
我没有找到解决这个问题的方法,并且已经花费了太多时间。我们目前正在使用一种解决方法,但希望能解决这个问题,因为这种情况在项目结束时会再出现几次。
任何帮助表示赞赏,如果您需要更多信息,请给我留言或发送电子邮件。