代码之家  ›  专栏  ›  技术社区  ›  Michel

C将继承的对象转换(不是强制转换)为新的基对象

  •  1
  • Michel  · 技术社区  · 15 年前

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

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

    所以我试着把车扔到一辆车上,然后把它保存下来,但即使我把它扔下来,它仍然是一辆车而不是一辆车。

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

    有没有一种方法可以创建一辆新的汽车并说:我给你一个继承的对象,请从你的共同财产复制所有的信息。

    米歇尔

    2 回复  |  直到 15 年前
        1
  •  1
  •   Craig Stuntz    15 年前

    对象实例无法更改其类型。我不认为 VehicleUI 是一种亚型 Vehicle 让你获益匪浅;它们仍然是不同的类型。

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

    创建一个 车辆 显示实例,使用 projection 相反。

        2
  •  2
  •   Tony The Lion    15 年前

    为了让继承的车辆使用数据上下文,我认为您必须更改 XML映射文件,它将数据库映射到对象,反之亦然。

    看一看 here 在“映射”部分下。