EF到POCO-Oracle或SQL Server-数字映射/转换



我有一个在SQL Server或Oracle上运行的遗留数据库模式。我想为这两个数据库使用实体框架和一组POCO,所以我一直在分解edmx文件,并对数据使用不同的概念和物理定义。

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

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

有什么想法吗?

我的最终解决方案是在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;}
}

不一定很优雅,但我可以用模型中的模板生成它,它很有效。。。

最新更新