database - 我不确定访问数据库的固定方式是什么

标签 database nhibernate dll c#-2.0 data-access-layer

我在使用 VB6、VB.NET、C# 等进行编程方面拥有丰富的经验,并且使用过 ADO,然后是 SubSonic,现在我正在学习 nHibernate,因为我可以使用 nHibernate 的大部分潜在工作。

问题是,我一直在根据我所学、阅读或理解的最佳实践进行编程。最近,有人通过工作中的 Spanner 让我思考。到目前为止,我一直在从核心应用程序和我编写的附加 DLL 访问数据库。

此人所说的结尾如下,因此我的问题是:

I can tell you that you wouldn't normally want to do this - an external class library shouldn't have access to the database

我试图做的是为 nHibernate session 创建一个共享/静态类,它可以在应用程序的全局范围内和任何 dll 中使用。此类将位于所有 dll 和应用程序引用的“核心”DLL 中。就像我说的,我正在学习 nHibernate,所以可能不是这样。

说我质疑我的数据库访问方法是轻率的。

有人可以直接告诉我吗?

编辑:

我想看看已经发表的评论,这取决于数据库的访问方式。我永远不会以任何方式将用户名/密码凭据等硬编码到任何 DLL 中。

更具体地说,我的查询与 NHibernate 的 session 有关。我有一个静态类,一个帮助程序类,它在应用程序启动时被调用,然后创建新 session 并将其附加到当前上下文(对于 Web 应用程序),然后每当我需要 session 时调用“GetCurrentSession”。这个静态类位于“核心”dll 中,可以使用引用的任何 DLL 等进行访问。此行为是有意的。我唯一的问题是这样可以吗?我应该换一种方式吗?

最佳答案

有几个原因

  1. 访问数据库,如何隐藏用户名/密码
  2. 共享 DLL,“不良”应用程序可能会获取您的 DLL 并与其链接以访问您的数据库。

这么说,如果您对文件等有适当的安全性,那么我会认为使用 DLL 可能是一种合理的方式。

关于database - 我不确定访问数据库的固定方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5678097/

相关文章:

c# - 如何使用c#绘制图表?

c# - 在 .Net Core 中播种

mysql - Codeigniter 数据库问题

c# - Nhibernate,确定是否已检索到延迟加载的集合

c++ - 在 Visual Studio 2012 中调试 C DLL 文件时无法单步执行代码

java - java应用程序中删除sql server数据库的所有数据

oracle - 使用 Microsoft System.Data.OracleClient 进行休眠

休眠延迟加载

vba - 以编程方式在 VBA 宏中设置 DLL 搜索路径

python - 导入 Myro 未找到的 win32 文件