问题标签 [daab]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
976 浏览

database - DAAB,使用数据库实例的最佳方法是

伙计们,我将使用 Enterprise Library (4.1),尤其是 DAAB。这是我有问题:

  1. 什么是最好的方法,为什么:

    • 每次需要运行 DbCommand 时,我都会使用 DatabaseFactory.CreateDatabase(); 创建数据库实例。

    • 我有一个带有实例数据库的基类(使用相同的 CreateDatabase() 静态方法)和返回实例数据库的公共属性之类的东西。

  2. 创建数据库类的实例有多“重”或快/慢?如果每次需要 DbCommand 时我都这样做会怎样?

谢谢你。

0 投票
2 回答
1499 浏览

asp.net - 混合 NHibernate DAL/BLL

我有一个现有的 asp.net webforms 项目,它使用 Microsoft 的 Enterprise DAAB 作为 DAL,我需要实现一些广泛的功能,并且我想使用 NHibernate 使事情变得更容易。

是否有任何允许混合 DAAB/NHibernate DAL 的设计模式/架构?这是个好主意吗 ?

我的想法是:如果我有一个混合 DAL,我仍然可以通过 DAAB 端传递高流量/非动态查询,并节省动态 sql 生成的开销。但仍然有 nhibernate 用于更复杂的查询。

此外,为 asp.net webforms 应用程序设置 NHibernate DAL/BLL 的最佳方法是什么?我已经阅读了 NHibernate 网站上的教程,其他几个似乎没有就开始/​​结束 nhib 会话达成共识。我只是在寻找最佳实践示例。

谢谢

0 投票
1 回答
1345 浏览

c# - 使用 DAAB 3.5/4.0 的 DAL 设计

我正在开发一个 .Net 3.5 Web 应用程序。它有各种模块,例如客户、订单等。我需要使用 Enterprise Library 4.0 设计数据访问层 (DAL)(使用数据访问应用程序块或 DAAB)连接到 SQL Server 2005。这是我打算如何去做:

• 有一个名为“IDataService”的接口。它将有“ExecuteReader()”、“ExecuteScalar()”、“ExecuteNonQuery()”、“AddParams”等成员......基本上,这个接口几乎看起来像达布。

• 有一个名为“DataService”的类,它实现了这个接口。这个类将充当DAAB 的包装器,每个方法都将在内部使用DAAB 中的相应方法。

• 拥有像客户、数据等这样的业务类(或数据容器),它们的属性将映射到数据库中相应的表属性。

• 每个模块都有 DAL 类,如 CustomerDataService、OrdersDataService 等。这些类中的每一个都有构造函数代码,我将在其中实例化 DataService 类,如下所示: IDataService dataService= new DataService() 此外,这些类中的每一个都有如下方法: GetCustomerDetails() AddCustomer() RemoveCustomer() UpdateOrder 等这些方法将在内部使用“dataService”对象对数据库 ExecuteReader、ExecuteNonQuery 等进行任何操作

• 每个模块都有一个映射器类,如“CustomerMapper”、“OrderMapper”等。这些类将数据源(例如 IDataReader)作为输入,并将数据填充到通用集合(List)中。并且这些映射器类将由相应的 Dataservice 类在内部调用,以将类型安全的集合返回给调用客户端。

• 有一个像DbHelper 这样的帮助类,它会执行诸如“处理DBNull 案例”、“存储存储过程名称”等任务。

• DataService 类将被BusinessLogic 层类依次使用……即CustomerBusiness、OrdersBusiness 等。

• 业务逻辑层将集合返回到表示层。

这种设计有意义吗?这种方法的优点/缺点是什么?我能想到这种方法的优点是所有 DataService 类将始终针对接口“IDataService”进行编程,而无需知道“DataService”类是如何在内部实现的。因此,将来,如果我删除 DAAB 并在我的内部使用另一个 API DataService 类,客户端代码无需更改。此外,我可以在我的 IDataService 接口中添加 DAAB 中不存在的任何方法....例如 BatchUpdate()...

如果我错了,请纠正我。

0 投票
4 回答
15493 浏览

c# - 如何将 DbType.Time 的 Datareader 结果转换为 Timespan 对象?

我正在使用带有 DAAB 4.0 框架的 c# 从数据读取器中读取列类型为 dbtype.time 的 MS SQL 2008 数据库的结果。

我的问题是 MSDN 文档说 dbtype.time 应该映射到时间跨度,但我看到的唯一关闭的时间跨度构造函数接受 long,并且从数据读取器返回的结果不能转换为 long 或直接转换为时间跨度。

我发现这篇文章显示了 datareader.getTimeSpan() 方法,但是 daab 4.0 中的 datareader 似乎没有这个方法。

那么如何将数据读取器的结果转换为时间跨度对象呢?

0 投票
1 回答
2502 浏览

asp.net - 使用 DAAB 处理动态连接字符串

我正在为我们的 ASP.Net 2.0 Web 应用程序添加一个数据访问层,该应用程序几乎完全使用内联 SQL 调用和大量使用复制/粘贴来编写。由于业务问题,我一次只能重构应用程序的一小部分(无法安顿下来并进行大规模的重新设计),所以我必须接受某些设计决策,直到事情足够松散耦合进行重大更改并正确测试它们。

我决定使用企业库数据访问应用程序块作为未来数据访问层的管道,而以前的一个这样的设计决定给我带来了问题。目前,我们根据用户提供的帐户 ID 从管理数据库中获取应用程序的“主”连接字符串,以便我们可以允许应用程序的单个安装访问多个数据库。我的问题涉及试图找出将连接字符串(或帐户 ID)获取到 DAL 的最佳实践方式。

之前的实现是将加密的连接字符串存储在 cookie 中,所以我目前的破解方法是从那里获取连接字符串,然后以下列方式使用 DAAB:

Connection.GetConnectString() 从 cookie 中获取连接字符串。

我知道这远不是最好的方法,我需要修复它,但我正在努力用“正确”的方式来完成它。也许创建一个基类,我可以使用连接字符串进行初始化并从中继承所有其他类,但我不确定它的外观以及我将首先初始化该类的实例的位置。在访问任何 DAL 功能之前的每一页上?

任何指导将不胜感激。谢谢你。

更新

让我澄清一下。一个安装最多会有 3 或 4 个不同的连接字符串。“帐户 ID”不是用户 ID,它被多个用户用来实质上指定要连接到哪个数据库。

0 投票
3 回答
1443 浏览

c# - Microsoft Enterprise DAAB 和关闭连接

我注意到我们的一个内部应用程序正在使用 DAAB,并且它似乎存在某种连接泄漏。我想我记得当您使用以下代码时在某处读过:

连接已为您关闭,因此我进行了调查,但看起来并非如此。我对 DAAB 不太熟悉,有人知道会发生什么以及何时发生吗?此外,同一个应用程序有一堆类,如:

起初这似乎有点令人畏惧,但就像我说的那样,我对 DAAB 并不熟悉。如果连接没有在 DAAB 中自行关闭,这些类会导致泄漏吗?

0 投票
2 回答
786 浏览

asp.net - 使用 DAAB 4.1 部署项目的运行时错误

在尝试使用 Microsoft Enterprise Library 的 Data Access Application Block 4.1 时,我在部署时遇到了一个奇怪的问题。尝试使用利用 DAAB 的 Web 应用程序元素时,我收到以下未处理异常:

我的 web.config 有以下连接字符串部分:

并且 data.config 包含异常中引用的 DBNAME 条目:

我知道连接字符串是有效的,因为应用程序中未使用 DAAB 进行数据访问的部分正在使用相同的连接字符串,没有任何问题。此外,在我的开发机器以及其他开发人员的机器上一切正常。这仅在部署到生产服务器时发生,甚至不特定于“发布”版本,因为该版本在我的本地机器上也可以正常运行。

我怀疑这可能是生产服务器的配置问题,但我无法弄清楚它可能是什么。关于部署企业库的 MSDN 文章提到程序集的 xcopy 部署应该可以工作,我将它们包含在 /bin 文件夹中,所以我不确定从那里去哪里。有任何想法吗?

0 投票
1 回答
1106 浏览

.net - Oracle 上的 .NET TransactionScope

我们在 Oracle 上使用 DAAB 和 TransactionScope。我们的应用程序仅管理与 1 个数据库的所有连接。这种类型的实现似乎需要“Oramts.dll”。有没有在没有 MTS 的情况下使用 DAAB 和 TrasnsactionScope 的方法?

谢谢!

0 投票
2 回答
11890 浏览

c# - 使用 DAAB 和 C# 从 Oracle 过程返回多个引用游标

我想从 Oracle 过程返回数据以填充一些标签控件。该过程接受 26 个输入参数(搜索变量)并返回 3 个输出游标。我已经成功地从使用 OracleCommand、DataAdapter 和 DataSet 返回单个引用游标的过程中返回数据,但是从返回多个引用游标的过程中返回数据时遇到了各种问题。

我试图使用 Enterprise Library 中的 DAAB,但没有成功(原始帖子)。我现在回到了基于 Oracle 和其他开发站点的帖子的 OracleCommand。我仍然返回零行。我可以使用“rdr_p_cursor_detail.GetName(0);”从我的读者那里返回列名,但是当我尝试返回一个值时,我得到一个“由于对象的当前状态,操作无效”。错误。

截断的 oracle 程序:

有任何想法吗?我倾向于不正确的阅读器使用,但无法弄清楚我错过了什么。谢谢。

0 投票
2 回答
387 浏览

.net - 数据访问应用程序块 (DAAB) 和 SQL IN 关键字(多个条件)

我正在使用模式和实践数据访问应用程序块,我希望能够使用多个条件执行 SELECT,就像您可以在 SQL 中使用 IN 关键字一样。如:

如何传递@keys 值?我不想动态构建我的 SQL。

我正在查询 Oracle 数据库。

此外,是否有另一种方法可以进行更 DAAB 友好的查询?

谢谢,基思