我正在使用 EF 5 构建一个应用程序来与现有的 Oracle 数据库通信。我不允许更改数据库架构的任何部分。我已经使用 VS2012 向导从数据库中生成了我的模型,并且所有类都以其对应的 Oracle 命名。
数据库中对象的命名是 QUITE_UGLY_AND_INCONSISTENT,所以我想重命名 POCO 类和属性。我可以通过 EDM Designer 轻松做到这一点。结果,我得到了整齐命名的类和属性名称,它们映射到数据库中的 UGLY_NAMED 表。我可以成功执行查询,一切顺利。正是我想要的。
但是,当我需要向模型添加新表时,我会运行“从数据库更新模型”向导并检查要导入的其他表。它突然在“删除”选项卡下列出了我重命名(但仍然正确映射)的类,说它在数据库中找不到它们。当我单击完成时,我现有的类未映射,我必须手动将每个属性重新映射到其相应的 DB 列...或者从版本控制回滚到 EDMX 文件的先前版本。
我正在寻找您认为对这个问题最优雅的解决方案,因为我需要应用程序尽可能地可维护。我强烈支持一种方法,它可以让我从数据库中自动生成新类,同时保留现有的重命名对象及其映射。
- 我是否忽略了一些阻止更新模型向导删除我现有映射的方法?
- 我应该使用不同的方法来重命名生成的类吗?
- 我是否应该让生成的类保持不变,而是构造一个命名合理的包装类,这些包装类会暴露给我的应用程序的其余部分?
- 我应该避免自动生成,而是采用代码优先的方法吗?这是一个非常不利的选择,因为我需要尽可能少地花费在手动模型编码和映射上的时间。添加对象将是一项非常频繁的任务。
- 我是否应该完全使用不同的 ORM..?