【发布时间】:2010-05-18 09:59:07
【问题描述】:
我正在将旧的 ASP 应用程序迁移到现代 .NET 版本,以缩短我们正在研究 .NET 4.0 实体框架的开发时间。但是,我们似乎在这个问题的开发中遇到了障碍。
Given 是我们数据库的一小部分: 包含汽车列表及其各自属性的表 OBJECT。我们还有一个表 OBJECT_OPTIONS,其中包含 OBJECT 中给定汽车的选项、附件和标准设备列表。这三种类型都具有相同的字段,因此存储在同一个表中。 ncopt_type 列用于区分不同的列表。可能的值为:“opt”、“acc”和“sta”。表 OBJECT_OPTIONS 通过 ncopt_obj_id 链接到 OBJECT,ncopt_obj_id 表示表 OBJECT 中唯一的汽车 (obj_id)。
我们的目标是为 OBJECT 实体提供 3 个链接到不同 OBJECT_OPTIONS 列表的属性: - 属性选项 - 物业配件 - 属性标准设备
我们尝试了不同的教程和演练关于通过继承模型的每层次表,但未能成功创建可构建模型。
从技术上讲,我们所做的是:
- 创建实体 OBJECT
- 创建实体 OBJECT_OPTIONS,使其抽象
- 使用基本类型 OBJECT_OPTIONS 添加实体 OPTION、ACCESSORY 和 STANDARD_EQUIP
- 为 ncopt_type = '...' 上的所有三个表添加条件
- 向 OBJECT 添加 3 个导航属性,全部链接到继承实体之一:OPTIONS、ACCESSORIES 和 STANDAARD_EQUIPMENT
在这个设置过程中出现了一堆错误,但我们最终得到了这个:
错误 3032:从第 250、286 行开始映射片段时出现问题:EntityTypes NCO.Model.OPTION、NCO.Model.ACCESSOIRE、NCO.Model.STANDAARD_EQUIP 被映射到表 OBJECT_OPTIES 中的相同行。映射条件可用于区分这些类型映射到的行。
但所有三个对象都存在一个条件。
我没有找到解决这个问题的方法,并且已经花费了太多时间。我们目前正在使用一种解决方法,但希望能解决这个问题,因为这种情况会在项目结束时再出现几次。
感谢您的帮助,如果您需要更多信息,请给我留言或发送电子邮件。
【问题讨论】:
-
看来不是。我也有同样的问题,...也许只有我们两个人!
-
您能否附上 edmx 中相关表格和相关实体的图像? - 这将有助于澄清你想要做什么。编辑后在这里发表评论。
标签: .net entity-framework-4 table-per-hierarchy