跨数据库实体框架支持

时间:2012-02-26 06:02:01

标签: database entity-framework linq-to-sql devart

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

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

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

3 个答案:

答案 0 :(得分: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的实现。

答案 1 :(得分:1)

我发现linqconnect component from (devart)符合我的需要。

答案 2 :(得分:1)

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

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

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

相关问题