.NET中的SQL和Oracle最佳实践

时间:2010-11-12 14:36:22

标签: .net sql oracle linq-to-sql ado.net

我想知道将从.Net使用Oracle和SQL的最佳实践。

优先级:免费解决方案,查询性能,可重用代码。

例如,对Oracle和SQL使用相同的LINQ查询会很漂亮。但据我所知,LINQ2SQL仅适用于Sql,实体框架 - 没有oracle提供者(例如我不想购买它并使用Codeplex),nHibernate - 所以我需要的性能接近纯查询。

你在我的.NET兄弟的项目中使用了什么? :)

感谢您的体验。

4 个答案:

答案 0 :(得分:1)

我会使用NHibernateEnterprise Library以及Data Access Application Block

这是一个显示如何使用它的链接。
Using Microsoft Enterprise Library Data Access Application Block – Part II

另一个以简短教程的形式 Get Started with the Enterprise Library Data Access Application Block

简而言之,NHibernate是一个ORM(对象关系映射)工具,它允许您使用XML文件将面向对象的类映射到基础数据表,无论您使用的是什么基础数据存储。可以使用连接字符串对数据存储区进行配置,并为其提供正确的.NET数据提供程序,以使其完全正常工作。

另一方面,Enterprise Library's Data Access Application Block是传统ADO.NET的一种包装器,以简化其使用。您可以命名连接字符串并打开与这些基础命名数据库/连接字符串的连接。一旦掌握了此库的Database对象及其配置功能,就没有什么可能阻止您访问数据。

这有帮助吗? 您是否需要我可以帮助您的更多详细信息?

编辑#1

.NET中的任何内容都不会像“纯SQL查询”那样执行,因为.NET是托管代码。另外,在查询数据库之前,必须考虑连接开销和身份验证。

编辑#2

这里有NHibernate支持的数据库列表:
Databases supported by NHibernate

我似乎无法使用EntLib DAAB轻松找到(快速)支持的数据库列表,但这是我迄今为止已经使用过的内容:

  1. Oracle 8i,9i和10g(请使用原生Oracle .NET数据提供程序以获得更好的性能和行为)
  2. SQL Server 2005/2008
  3. SQLite的
  4. Microsoft Access
  5. 其他许多人也受到支持。

答案 1 :(得分:1)

您还可以在ADO.NET中使用通用数据提供程序。请参阅System.Data.Common命名空间 - http://msdn.microsoft.com/en-us/library/system.data.common.aspx和“在ASP.NET 2.0和ADO.NET 2.0中编写通用数据访问代码”http://msdn.microsoft.com/en-us/library/ms971499.aspx

答案 2 :(得分:0)

您可能想要查看nhibernate。它是一个开源ORM,适用于大多数主要数据库。 http://nhibernate.info/

答案 3 :(得分:0)

我喜欢Stored Procedures,我认为它们会给你一个不错的表现和优雅。 nHibernate也是一个很好的解决方案。

除了这两个,我不记得我推荐的任何事情:)