【问题标题】:SQL and Oracle best practices in .NET.NET 中的 SQL 和 Oracle 最佳实践
【发布时间】:2023-04-10 10:56:01
【问题描述】:

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

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

例如,将美丽的 LINQ 查询用于 Oracle 和 SQL。但据我所知,LINQ2SQL 仅适用于 Sql、实体框架 - 没有 oracle 提供程序(例如,我不想从 Codeplex 购买和使用)、nHibernate - 所以我需要近似于纯查询的性能。

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

感谢您的体验。

【问题讨论】:

  • 所以基本上你是说你买得起oracle许可证但买不起NHibernate许可证?
  • @klausbyskov:也许他正在使用 Oracle Database Express,它可以免费用于生产环境?
  • 我不想添加像 nHibernate 这样强大的怪物而失去性能,因为我需要的只是发出请求,它将在不同的 RDB 中快速执行。
  • NHibernate 已经过分析和优化以实现最佳性能。无论如何,如果需要这样的性能,您甚至可以选择非托管代码而不是 .NET,后者具有托管代码的开销。在对底层数据存储执行查询时,您几乎不会注意到 NHibernate 或 EntLib DAAB 之间的区别。

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


【解决方案1】:

我会使用NHibernateEnterprise LibraryData 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. 微软访问

还支持许多其他的。

【讨论】:

    【解决方案2】:

    您还可以使用 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

    【讨论】:

    • +1 是的,System.Data.Common 命名空间可以解决问题!这就是企业库的数据访问应用程序块的构建。 =)
    【解决方案3】:

    我喜欢存储过程,我认为它们给你一个很好的性能和优雅。 nHibernate 也是一个不错的解决方案。

    除了这两个,我不记得有什么我可以推荐的:)

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2010-11-17
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多