1

我希望在我的应用程序中使用实体框架作为数据库层,但我发现它不支持 oracle 数据库,为此我需要使用第三方提供商。

但是我想构建支持多个数据库(Oracle,MS Sql Server)的数据库层,同时支持像 LinqToSql 和 devart 这样的实体模型。

如果有人有任何信息可以帮助我,我将不胜感激。谢谢。

4

3 回答 3

1

您在这里想要的可能是存储库模式,它可以位于中间,这样您的应用程序就不会关心底层数据的存储方式。

您可以使用类似我的存储库模式(在此处阅读:http: //blog.staticvoid.co.nz/2011/10/staticvoid-repository-pattern-nuget.html)并为 oracle 实现自定义 IRepositoryDataSource(您可以通过使用来自 codeplex 的 LINQ to oracle 提供程序(http://linqtooracle.codeplex.com/)来做到这一点,或者您可以编写自己的存储库,其中包含 sql 和 oracle 的实现。

于 2012-02-26T09:19:05.780 回答
1

我发现来自 (devart) 的 linqconnect 组件可以满足我的需要。

于 2012-03-04T12:00:04.510 回答
1

实体框架不包括除 SQL Server 之外的任何 RDBMS 的现成提供程序。任何希望支持 EF 的第三方 RDBMS 供应商都应根据 Microsoft 的提供程序模型提供自己的实现。Oracle 实际上已经发布了一个官方提供程序,它是 ODP.NET 的一部分。我会推荐这个,因为它是免费的:

http://www.oracle.com/technetwork/issue-archive/2011/11-sep/o51odt-453447.html

PS - Devart LinqConnect 提供程序并不是真正的Linq to SQL 提供程序。它们提供的类模仿 Linq to SQL 类的结构和功能(DataContextEntitySet<T>等),但它们位于不同的命名空间中。除了 Microsoft 之外,任何人都不可能实现 Linq to SQL 提供程序,因为他们从未通过公共类型公开提供程序模型。

于 2012-03-04T18:16:38.140 回答