问题标签 [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 投票
5 回答
460 浏览

sql - 处理 SQL 参数的最佳方式?

我基本上有一个与任何业务逻辑完全隔离的数据库层。这意味着每当我准备好将一些业务数据提交到数据库时,我都必须将所有业务属性传递到数据方法的参数中。例如:

Public Function Commit(foo as object) as Boolean

这很好用,但是当我进行需要几十个参数的提交和更新时,可能需要大量输入。更不用说我的两个方法——更新和创建——采用相同的参数,因为它们本质上做同样的事情。我想知道的是,传递这些参数的最佳解决方案是什么,这样我就不必在每次发生变化时都更改这两种方法中的参数以及减少我的打字:) 我想到了一些可能的解决方案。一种是将所有 sql 参数移动到数据类的类级别,然后将它们存储在我在业务层中设置的某种数组中。任何帮助都会很有用!

0 投票
1 回答
303 浏览

parent-child - 具有父子关系的数据访问层应该是什么样子?

我正在编写我的第一个 NHibernate 应用程序,但我想这个问题适用于任何 ORM 框架。我的应用程序是一个简单的错误跟踪器(开发人员都了解问题域,对吗?),我想知道如何最好地在 DAL 中建模项目/票证关系。AProject有多个Tickets;aTicket必须由 a 拥有Project

我见过的每个例子都显示一个IRepository<T>, FindAll, Save, Delete, 等等。所以我有一个interface IProjectRepository : IRepository<Project>.

我的问题来自以下问题:我是否有一个ITicketRepository知道如何谈论门票的人,或者这是IProjectRepository需要知道的事情?

还是我完全在错误的树上吠叫?有人可以指点我一些示例代码,这些代码模拟了与 DAL 的父子关系吗?

0 投票
6 回答
2057 浏览

.net - 如何设计独立于提供者的 DAL

我目前正在开发一个查询构建器应用程序,基本上是一个简单的图形界面,它应该允许不了解 SQL 的用户在数据库上定义各种查询(连接、SELECT、INSERT、UPDATE、DELETE)。我将使用 .NET 3.5。我的应用程序应该支持多个数据库,它应该与 MS-SQL Server、MySQL 和 Oracle 一起使用,所以我希望能提供任何提示或链接到有关如何设计独立于提供程序的 DAL 的相关讲座。

用户将选择一个数据库服务器,当前服务器上的一个数据库,提供连接凭据,选择各种表,定义查询(使用一系列组合框),如果查询有效,则最终执行查询。当然,在 DAL 中,我确实希望为每个数据库提供程序提供方法。我正在考虑工厂模式的一些内容。

注意:这是一个简单的学校项目,所以我对结果查询的安全性或性能不感兴趣。

更新:经过更多研究和您提供的非常有价值的输入,我决定使用DbProviderFactory. ORM 会很有趣,但是因为我只想要一个查询分析器/构建器,所以我看不出使用它的意义。因此,如果您能向我指出有关如何使用DbProviderFactory和相关类的详细教程,我将不胜感激。

0 投票
4 回答
2388 浏览

c# - 另一个数据访问层(c#.net 2.0)

意识到我正在编写另一个代码生成器来为简单的 ORM 层执行 sps/classes/interfaces 等。这次大部分胆量都在SQL中。我有一个通用的 C# DAL 用于调用 sps/获取结果等(花了我一个小时左右,而且很小)。

我认为现在肯定会有更简单的方法......有吗?

我对 SQL 充满信心/胜任并使用存储过程等 - 我不想隐藏 SQL,只是将无聊的重复从用于填充/持久对象的编码中解脱出来。我不喜欢学习模板语言/复杂的应用程序,或产生巨型膨胀软件(或建立在膨胀的 MS 库上)的应用程序。还必须能够从现有数据库开始。

仍然是自己动手的情况吗?真的吗?

.Net 2.0 (Winforms)

编辑:我并不完全反对模板,如果它真的很简单/快速上手的话。理想情况下,解决方案应该是小型的、免费的并且对其他开发人员来说并不可怕。

0 投票
3 回答
484 浏览

asp.net - 需要有关选择数据访问方法的建议

我正处于计划将大型经典 ASP 数据库应用程序转换为 ASP.Net 的早期阶段,并且在选择使用哪种数据访问方法时遇到了麻烦。我玩过 Linq To SQL、动态数据、强类型数据集、企业库(数据访问应用程序块)和一点点实体框架,但没有一个让我觉得“那个”。选择太多了-我的头在游泳,帮我选择!

也许这将有助于提供一些关于我正在转换的应用程序的背景以及优先级......

  • 后端是 Microsoft SQL Server(2005 或更高版本),我们致力于此,因此我无需担心是否支持不同的数据库平台。

  • 数据库非常成熟,包含了大量的业务逻辑。它高度规范化并广泛使用存储过程、触发器和视图。我不想同时重新发明两个轮子,所以我想对数据库做尽可能少的改动。因此,我需要选择一种足够灵活的数据访问方法,让我能够解决数据库中的任何问题。

  • 该应用程序具有许多数据输入表单和广泛的搜索和报告功能(报告是我稍后将解决的另一个问题)。

  • 应用程序需要足够灵活,以处理对数据库结构的微小更改。应用程序(和数据库)可以安装在对数据库进行少量自定义修改的不同站点。理想情况下,应用程序可以识别数据库扩展并做出适当的反应。换句话说,如果我需要在应用程序中存储一个 O/R 映射,我需要在新站点上安装应用程序和数据库时能够将其换出(或轻松刷新)。

  • 快速应用程序开发至关重要。由于数据库已经完成,并且用户界面将与现有应用程序紧密匹配,我希望找到一些可以很快完成的东西。如果可以节省开发时间,我愿意牺牲不使用绝对最新和最伟大的技术。换句话说,如果使用 Entity Framework 之类的东西有一个陡峭的学习曲线,我可以使用强类型数据集和自定义 DAL 之类的东西,如果它可以加快进程的话。

  • 我是 ASP.Net 的新手,但对经典 ASP、T-SQL 和旧的 ADO(例如断开连接的记录集)非常熟悉。如果任何一种数据访问方法更适合来自我背景的人,我可能会倾向于那个方向。

感谢您提供的任何建议!

0 投票
6 回答
754 浏览

asp.net - .NET MVC 还是普通的旧 ASP.NET?

这是一个大喊大叫,因为我过去几天一直在学习.NET,这个过程让我有点困惑而不是开悟。作为背景信息,我了解 PHP(甚至使用 CakePHP 相当容易地创建整个应用程序)和 Rails。

我想知道我应该追求 ASP.NET 还是应该坚持学习 ASP.NET MVC?当我浏览一些 ASP.NET 教程时,基础知识似乎相当简单,但不知何故,当我浏览的每个示例都在没有 DAL 的情况下将 SQL 语句直接插入示例时,我只是有点担心。

所以,如果我只是没有做任何好的研究,是否有任何书籍/网站可以帮助解决这个问题?还是我应该去学习.NET MVC?

如果您想知道为什么我不坚持使用 PHP 或 Rails,我刚刚了解到,为了工作的安全,我可能只需要了解一点 .NET。

0 投票
7 回答
2878 浏览

design-patterns - 您是否允许 Web 层直接访问 DAL?

我对感知到的“最佳实践”感兴趣,这里有一点现实。

在 Web 应用程序中,您是允许您的 Web 层直接访问 DAL,还是应该先通过 BLL?

我说的是没有真正涉及“业务逻辑”的场景——例如一个简单的查询:“获取所有姓氏为 'Atwood' 的客户”。有任何逻辑的场景绝对会通过 BLL,所以我们称之为moo

虽然您可以将此方法封装在 BLL 对象中,但如果签名通常与 DLL 对象的签名完全相同,并且代码可能像将查询委托给 DLL 的单行代码一样简单,这似乎有点毫无意义.

如果你选择前者——使用 BLL 对象——你怎么称呼这些对象?(假设他们只是在 DLL 中提供一个查询层)。帮手?查询提供者?

请思想。

问候

马蒂

0 投票
5 回答
16379 浏览

c# - 表示层、业务层和数据层

我刚开始用 C# 编程,并且正在阅读关于将您的应用程序/网站分为三个不同层的最佳实践,但我很难准确理解如何。我正在从事一个宠物项目,以更多地了解 C#,但我不想从任何坏习惯开始。你能看看我有什么,看看我做得对吗?提供一些关于如何将所有内容分解为不同层的提示建议?

表示层

业务层

数据访问层 (DAL)

0 投票
1 回答
301 浏览

c# - n 层应用程序中的方法级文档

我的情况:

我的应用程序的数据请求链如下所示:

客户端是一个 Silverlight 应用程序,它使用生成的代理与 WCF Web 服务进行通信。反过来,它使用 DAL 组件进行授权和访问 SQL DB 和 OLAP 多维数据集,基本上它只是转发请求。因此,每种方法存在于四个不同的地方:

现在我的问题是,我应该在哪里放置文档以明确指定这些方法?在类或接口级别上,在 DAL 上还是在 Web 服务上?

到目前为止我的想法:

我会说在接口上编写方法规范最有意义,因为它是正在使用的合约。但是,在我的具体情况下,我看不到 webservice 和 DAL 之间的优势:

  • 我是唯一的开发人员,没有单独的 webservice-guy 或 client-guy 需要文档
  • 这是一个封闭的架构,webservice 不公开
  • 将来从事此项目的每个人都可以访问它的所有组件(并且无论在哪里都可以找到文档)

那么,你怎么看呢?在这种情况下,我应该将方法级文档放在哪里?

0 投票
2 回答
423 浏览

business-logic - 我应该将我的 SqlDataReader 代码放在哪个部分?

我对 c# 相当陌生,正在尝试编写一个 n 层 Web 应用程序。为了确保我将逻辑和代码放在正确的位置,我只是有一个关于将代码放在哪里的问题。

我有三个主要部分:

  1. DataAccess 代码 - 在我的 App_Code 文件夹中名为“BusinessLogic”的文件夹中。

  2. 业务逻辑代码 - 在我的 App_Code 文件夹中名为“DataAccess”的文件夹中。

  3. 表示层 - 所有的 UI

例如,如果我需要编写一个 SqlDataReader 来从我的数据库中检索记录,我将在哪里实际编写代码?在 BLL 或 DAL 中?

IE 从表示层我调用 BLL 代码。

这是我开始感到困惑的地方。在我调用的业务层逻辑层中,我是在此处编写 SqlDataReader 代码,还是再创建一个步骤并在数据访问级别编写 SQlDataReader 代码。

IE 在 BLL 中我应该添加一个名为 DAL 的方法吗?例如

然后在我的 DAL 中,我有一种方法来执行实际的 SqlDataReader EG

我一直在尝试从 asp.net 网站上的教程中学习,但是对于教程中的 DAL,他们使用数据集代替。任何帮助将不胜感激。