【发布时间】:2014-02-06 15:37:36
【问题描述】:
我有一个概念问题。这是关于持久化继承对象的正确数据库架构。我希望有正确的方法来做到这一点,而不是首先使用 EF Code,因为这都是事先设想好的,不一定与 EF 一起使用,它可能是,但不确定,或者不仅如此。我需要一个正确的方法,它仍然与 ORM 方法一致,比如实体框架。
让我们简化并假设我们有一个名为“Transportation Vehicle”的对象:TransVehicle,它具有以下属性:
- 姓名
- 颜色
- 年龄
假设现在我们有一个继承自 TransVehicle 的“Car”,它添加了以下属性:
- 燃料类型
- 车轮尺寸
我们还有一个“平面”,它添加了以下其他属性:
- 引擎数量
- MaxTakeOffWeight
所以,我的代码中可能有一个包含汽车和飞机的列表。
我想我可以有一个表“TransVehicle”,其中包含“Id、Name、Color、Age”等字段,然后是一个表“Cars”,其中包含“Id、FuelType、WheelSize”等字段,以及一个表“Planes”,其中包含字段“Id、EngineQuantity、MaxTakeOffWeight”。 我可以说:
- 我阅读了“Plane”行并填写了来自“TransVehicle”的具有相同 ID 的信息。
- 我阅读了“TransVehicle”行,并针对每一行查看是否找到了 Planes 记录或 Cars 记录来实例化正确的对象。
- 我读取“TransVehicle”行,并在特殊字段中查找枚举值(字符串,int?)以具有对象类型,然后根据此类型,从“Plane”或“Car”表中获取信息.
什么是好的概念实践?你有其他提示吗?哪种方式更容易在 ORM 中映射?
【问题讨论】:
标签: c# database entity-framework inheritance