1

我有一个在 SQL Server 或 Oracle 上运行的旧数据库架构。我想为这两个数据库使用实体框架和一组 POCO,因此我一直在努力分解 edmx 文件并为数据使用不同的概念和物理定义。

我遇到问题的地方是现有的数字数据,因为我无法更改数据库中的类型。SQL Server 定义是一个浮点数,Oracle 是一个数字 (19,4),它们分别被反向工程为双精度和小数。

如果我将概念模型更改为十进制(应该适应任何一种类型),我会收到一个错误,表明 Edm.decimal 与 SqlServer.float 不兼容。如果我将概念模型保留为反向工程值,那么它会给出一个错误,指出概念类型与 POCO 类型不匹配(这是十进制,因为它似乎与两个数据库都兼容)。

关于如何解决这个问题的任何想法?

4

1 回答 1

0

我对此的最终解决方案是在 POCO 中有两个字段,一个用于处理 Oracle,一个用于处理 SQL Server。由于应用程序的余额(主要是 C++)使用浮点数,因此代码使用 SQL Server 字段,而 Oracle 字段仅转换为 SQL 字段以检索并保存到数据库。在 Oracle 数据模型中,该字段在逻辑模型中被重命名,以便它使用翻译。

public double Value { get; set; }
private decimal ValueDecimal
{
    get{ return (decimal) Value;}
    set{ Value = (double) value;}
}

不一定很优雅,但我可以使用模型中的模板生成它并且它可以工作......

于 2014-04-09T14:08:32.800 回答