我希望在我的应用程序中使用Entity框架作为数据库层,但我发现它不支持oracle数据库,我将需要使用第三方提供程序来实现此目的。
但是我想构建数据库层支持多个数据库(Oracle,MS Sql Server),同时支持像LinqToSql和devart这样的实体模型。
如果有任何人有任何信息可以帮助我,我将不胜感激。 感谢。
答案 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类(DataContext
,EntitySet<T>
等)的结构和功能,但它们位于不同的命名空间中。除Microsoft之外的任何人都不可能实现Linq to SQL提供程序,因为它们从未通过公共类型公开提供程序模型。