C#将继承的对象转换(未转换)为新的基础对象

时间:2010-01-06 10:00:19

标签: c# entity-framework

我有一个UI对象VehicleUI,它继承自Vehicle。 它是相同的,但它为用户输入过程提供了一些额外的属性。

现在我想将VehicleUI保存到表Vehicle中的数据库(使用entityframework)。 在我看来,这必须是可能的,因为VehicleUI具有车辆的所有属性,加上一些额外的属性。 我可以调用context.AddToVehicle,但是在运行时我得到一个错误,说没有VehicleUI的映射(这是正确的,因为我只有车辆的映射)

所以我尝试将VehicleUI投射到车辆然后保存它,但即使我投了它,Type仍然是VehicleUI而不是Vehicle。

所以我想要做的是基于VehicleUI对象创建一个新的新车辆对象,但是当然没有我输入vehicle.x = vehicleui.x,vehicle.y = vehicleui.y等等

有没有办法创建一个新车并说:我给你一个继承的对象,请复制你共同的属性的所有信息。

米歇尔

2 个答案:

答案 0 :(得分:2)

为了让你继承的vehicleUI能够使用datacontext,我认为你必须改变 XML映射文件,它将数据库映射到对象,反之亦然。

在地图部分下查看here

答案 1 :(得分:1)

对象实例永远不能改变它们的类型。我不认为让VehicleUI成为Vehicle的子类型可以获得更多收益;他们仍然是不同的类型。

大多数人使用AutoMapper之类的工具(或更简单版本的工具)来执行保存到数据库时所描述的那种映射。

创建VehicleUI实例进行展示时,请改用projection