问题标签 [data-access-layer]

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 投票
3 回答
4641 浏览

c# - LINQ2SQL 或实体框架或企业库?

使用市场上的实体框架LINQ2SQL,使用企业库数据访问应用程序块来设计数据访问层(DAL)是否有意义?

谢谢。

0 投票
14 回答
1990 浏览

orm - 不允许使用 Orm 工具:你在做什么?

假设您在一家不允许使用任何类型的 ORM 工具的 IT 商店。他们不想购买,您也不能使用开源解决方案。

你会怎么做?放弃真正的领域模型和以工作表为中心?制作自己的 DAL?

0 投票
2 回答
766 浏览

c# - System.Data.DbType 与 System.Data.SqlType

正在使用企业图书馆数据访问应用程序块...使用System.Data.DbTypeVs 对性能有影响System.Data.SqlType吗?

而且,想知道语句对性能的影响:

VS

0 投票
1 回答
612 浏览

.net - 是否有任何陷阱或充分的理由不使用 autosproc 进行存储过程调用?

我已经实现了一个数据访问层,它使用第三种猴子方法(http://www.codeproject.com/KB/database/DynamicMethod_ILGenerator.aspx)的变体从数据读取器填充通用实体。这工作得很好,执行得很好,并且节省了我为数据检索编写大量重复代码的时间。

现在我想添加采用通用实体的方法并将其转换为参数列表以提供给存储过程,这样我就可以将数据持久性添加到猴子的技巧集合中。

我在以下位置找到了一些指导:http: //msdn.microsoft.com/en-us/library/ms973259.aspx和 autosproc 解决方案中的一些示例代码。它在纸上看起来不错,我打算将其合并,但快速的谷歌并没有在实现 autosproc 的用户体验方面出现太多,我正在寻找任何去过那里并做过的人的竖起大拇指(或向下)已经。

那么,您是否使用过 autosproc?它对你有用吗?性能或其他方面是否存在任何使其不适合企业应用程序的巨大缺陷?

建议表示赞赏。

0 投票
4 回答
538 浏览

c# - 有时连接的 CRUD 应用程序 DAL

我正在开发一个有时连接的 CRUD 应用程序,该应用程序将主要由社会工作者和护士团队 (2-4) 使用,以计划的形式跟踪患者信息。该应用程序是在我之前创建的 ASP.Net 应用程序的重新可视化。4 个数据库中大约有 200 个表。Web App 版本严重依赖 SP,但由于此版本是一个 winform 应用程序,它将指向本地数据库,我认为没有理由继续使用 SP。另外值得注意的是,我曾计划使用合并复制来处理同步部分,这两者似乎存在一些问题。

我试图了解 DAL 使用什么方法。我最初计划使用 LINQ to SQL,但我读过一些花絮,说明它在有时连接的设置中不起作用。因此,我一直在尝试阅读和尝试多种解决方案;SubSonic、NHibernate、实体框架。这是一个相对简单的应用程序,并且由于“迫在眉睫”的版本 3 重新设计,这项工作可能是临界“一次性”。这里的重点是尽快启动和运行桌面版本。

我在这里要问的是任何有任何使用这些技术(或我没有列出的技术)经验的人来借给我你来之不易的智慧。在你看来,我最好的方法是什么?关于创建此类应用程序的任何其他见解?我真的在为这个程序的 DAL 部分苦苦挣扎。

谢谢!

0 投票
8 回答
10566 浏览

c# - C#静态数据库类?

我有一个包含以下方法的数据库类:

  • public bool ExecuteUDIQuery(string query) // UDI = 更新删除插入
  • public bool ExecuteSelectQuery(字符串查询)
  • public bool ExecuteSP(string sp, string[,] parms)
  • public int ExecuteSPReturnValue(string sp, string[,] parms)

方法的结果存储在私有数据集或数据表中。这些对象被定义为 getter。

大约有 10 个类使用 Database 类。每个类都创建类数据库的一个对象。现在我正在考虑使数据库类静态。这是一个好主意吗?如果是这样,为什么?不,为什么不呢?

0 投票
4 回答
20326 浏览

c# - 数据访问层到业务对象的最佳“模式”

我试图找出最干净的方法来做到这一点。

目前我有一个客户对象:

然后我的电子邮件对象也很基本。

DataAccessLayer 当前连接到数据库,并使用 SqlDataReader 遍历结果集并创建新的 Email 对象并将它们添加到完成后返回的 List 中。

那么我在哪里以及如何改进呢?

我是否应该让我的 DataAccessLayer 返回一个 DataTable 并将其留给 Email 对象来解析并将 List 返回给客户?

我猜“Factory”可能是错误的词,但我应该有另一种类型的 EmailFactory,它从 DataAccessLayer 获取一个 DataTable 并将一个 List 返回给 Email 对象?我想那种听起来是多余的......

将我的 Email.getEmails(id) 作为静态方法是否是正确的做法?

我可能只是试图找到最好的“模式”并将其应用到通常是一项简单的任务中。

谢谢。


跟进

我创建了一个工作示例,其中我的域/业务对象通过 id 从现有数据库中提取客户记录。nhibernate 中的 xml 映射文件非常整洁。在我按照教程设置会话和存储库工厂之后,提取数据库记录非常简单。

但是,我注意到性能受到巨大影响。

我的原始方法包括数据库上的存储过程,由 DAL 对象调用,它将结果集解析为我的域/业务对象。

我用 30 毫秒的时间记录了我最初的方法来获取一条客户记录。然后,我将 nhibernate 方法计时为 3000 毫秒以获取相同的记录。

我错过了什么吗?或者使用这条休眠路由是否有很多开销?

否则我喜欢代码的简洁性:

我遵循的示例让我创建了一个帮助类来帮助管理会话,也许这就是我得到这个开销的原因?

对于我正在开发的应用程序,速度至关重要。最终,大量数据将在网络应用程序和数据库之间传递。如果代理需要 1/3 秒来提取客户记录而不是 3 秒,那将是一个巨大的打击。但是,如果我正在做一些奇怪的事情并且这是一次性的初始设置成本,那么如果性能与在数据库上执行存储过程一样好,那么它可能是值得的。

仍然愿意接受建议!


更新。

我正在废弃我的 ORM/NHibernate 路线。我发现性能太慢了,无法证明使用它是合理的。对于我们的环境来说,基本的客户查询需要的时间太长了。与亚秒级响应相比,3 秒太多了。

如果我们想要慢速查询,我们只需保留当前的实现。重写它的想法是大幅增加时间。

然而,在上周玩过 NHibernate 之后,它是一个很棒的工具!它只是不太适合我对这个项目的需求。

0 投票
2 回答
3124 浏览

vb.net - 数据访问层是静态的还是基于实例的?

我当前的应用程序正在使用基于实例的数据访问层。我用连接字符串实例化层。然后我调用一个方法来执行某种命令。例如,有一种方法可以填充数据集。基本上,我传递存储过程和任何 SQL 参数并取回数据集。有一个静态类来处理我的数据访问还是基于实例更好?我确实有一个包含对象的域层,但我没有像 ORM 那样映射对象。我将对象传递给工厂,然后实例化数据层以拉回数据集。然后我将数据集映射到对象。我计划更新我的应用程序(是的,迁移到 C#),但我没有时间改变整个事情。我对插入更新和删除做同样的事情。如果我现在所做的一切正常,请告诉我。您认为这种方法有什么问题吗?否则,我该怎么办?我没有写这门课。我在网上找到了它,并认为这是我需要的。

以下是数据类的示例:

0 投票
4 回答
659 浏览

.net - 数据访问层新手

这里是 .NET 数据应用程序的新手,来自 Visual Foxpro 背景。

我正在计划一个 ASP.NET 和/或 Silverlight UI,也许还有一些 WPF 客户端的东西也在我们的 LAN 上,所以我想制作一个可以支持所有这些前端的数据访问层。

我的数据将在 SQL Server 中。我已经进行了将数据从 Foxpro 推送到 SQL Server 2005 的测试运行。它运行良好。这给了我一个可以使用的 SQL 服务器数据存储。

现在,这里是我迄今为止使用的数据工具,试图熟悉 .NET 数据访问:

  1. 我玩过 Linq-To-Sql,并使用 L2S 中的类型化对象和集合制作了一个测试表单,然后填充了一些 WPF 列表视图和其他 UI 控件。那很酷。林克很酷!WPF 很酷。请参阅此处的表格截图:http: //twitpic.com/26w26/full

  2. 我玩过我猜你会称之为经典 ADO.Net 数据集的东西。伙计,数据集似乎需要做很多工作...... SQLConncetion 一个 SQLCommand 一个 DataSet 一个 TableAdapter

...最糟糕的是,我必须在引号内键入 SQL 代码,而 IDE 完全没有帮助来防止我输入错误,或者只编写简单错误的 SQL 代码,而且我必须知道来自我的数据表每次。错误的空间很大!和查询参数,呸。

那么,让我问一下…….NET 开发人员社区真的使用 SQLCmds、DataSets 和 DataTables 来读取和写入数据吗?它是这样工作的吗?

我知道所有关于 O/RM 之争的事情,还有 EF。

看起来您可以将任何 UI 控件从 ASP.NET/Silverlight/WPF/和 WinForms 连接到对象集合(通过 OR/M)或 DataSets/DataTables,对吗?它总是在这两者之一之间进行选择吗?

所以,现在是我做决定的时候了,但是,我不知道如何选择。它们似乎都可以工作,但是那个该死的 DataSet 东西对我来说似乎很可怕,但是,不知何故,它似​​乎也很常用。

0 投票
3 回答
4996 浏览

client-server - 一个复杂查询与多个简单查询

实际上更好的是什么?让具有复杂查询的类负责加载例如嵌套对象?或者具有负责加载简单对象的简单查询的类?

对于复杂的查询,您不必去数据库,但该类将承担更多责任。

或简单的查询,您需要更多地访问数据库。然而,在这种情况下,每个类都将负责加载一种类型的对象。

我所处的情况是加载的对象将被发送到 Flex 应用程序(DTO)。