我现有的应用程序中有一个任务,我们有2个不同的数据库,一个在SQL Server中,另一个在Oracle中,但是两个架构都是相同的。

当前,我们有一个使用Entity Framework和SQL Server的ASP.NET MVC应用程序。是否可以在不更改代码的情况下针对Oracle数据库使用相同的实体模型?由于Oracle和SQL Server中的某些数据类型完全不同,因此通用实体模型.edmx无法正常工作,并且代码也会引发错误。有什么办法可以做到这一点?

请给我一个提示,以便我走得更远。

最佳答案

我发现一种解决方案是使用已经通过SQL Server连接创建的edmx文件的同一csdl amd msl部分,并对每种数据库类型使用不同的ssdl。

如果您不知道它们在项目中的位置或如何访问它们,只需在解决方案资源管理器中的edmx文件中单击鼠标右键,然后选择“打开方式”并选择“ xml编辑器”。
在那里,您可以看到每个部分在评论部分中都有其名称

c# - 在单个 Entity Framework 中具有相同架构的Oracle和SQL Server数据库-LMLPHP

此外,还有一个Microsoft工具EdmGen.exe是.net框架的一部分(因此,不必下载它,您已经拥有了它)

有关该工具的信息:
https://msdn.microsoft.com/en-us/library/bb896270(v=vs.110).aspx

通过此工具,您可以将ssdl文件转换为等效的oracle。

由于我在这段时期内也在工作,因此我没有完整的答案,但是可以为您提供一个开始

09-04 17:43
查看更多