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

sql - 在 Visual Studio 2008 中使用设计器将逗号分隔列表作为参数传递给 db2 查询的 IN 子句

我想将逗号分隔的值列表作为参数传递给我正在使用 Visual Studio 2008 中的设计器基于我正在经历的一些强类型 DAL 教程构建的查询。该查询针对的是 DB2 数据库。这是我想要做的:

从客户所在的价格中选择 *(?)

我在 123456 中通过它的工作正常吗?

但是当我传入 '123456' 时失败(这是一个字符字段,所以我不知道为什么这不起作用;它必须在幕后添加这些)或 123456、123457 或 '123456'、'123457'

我将此页面添加到一个门户,其中所有数据访问都是基于 DAL 设计器模型和调用它的 BLL 完成的,因此我想以这种方式进行操作以保持一致性。这是可能的,还是工具不够灵活,无法完成我需要它做的事情?谢谢。

0 投票
3 回答
631 浏览

asp.net - 今天为 ASP.net 推荐哪个数据访问层?

我目前正在建立一个小型网站,我会在其中写下出现的问题并给出答案,以供其他人查看。目前我使用的 DAL 与此处描述的非常相似。现在我一直在研究其他模型,特别是使用 Linq2SQL 和 ADO.net Entries 框架的基于 linq 的模型。我意识到我正在以某种方式将数据访问移动到代码层,因为然后我会过滤掉例如带有 linq 查询的顶级列表。我开始这样做的原因是因为 DAL 并没有真正与数据库同步,并且当我更改数据库中的某些内容时,可空类型变得不可空。然后,如果我将表重新导入数据表,我的查询将丢失。

我的简单问题是,如果您今天想要一个适用于 ASP.net 的良好 DAL,那会是什么?建议,经验非常受欢迎。

0 投票
5 回答
403 浏览

c# - 从分层架构更新数据库:最好的方法?

我已经构建了一个基本的 DAL,它可以使用这个 DAL 检索数据和一个包含多个对象的业务层。一旦我将数据映射到业务对象并对其进行了处理,我还想将数据写回数据库。一些业务对象有很多属性,因此将业务对象的每个值作为参数传递给相应数据服务的方法是不可能的。

我一直在考虑的其他方式:

  1. 将业务对象传递给相应的数据服务,在那里执行一个将所有值作为参数的 SP。- 糟透了,因为我必须将一个业务对象传递给 DAL(违反分离)并且可能最终得到具有 >50 个参数的 SP

  2. 在业务对象中创建一个空 (?) 数据集,用业务对象中的值填充它,将该数据集传递给数据服务并通过数据适配器更新数据库。我想用“... WHERE 0”-SQL 字符串创建一个空数据集。那会是一个好习惯吗?

这是我第一次做这样的事情。后者对我来说听起来更好,但也许还有其他更好的方法?或者由于某些我不知道的原因,第一个更好?

非常感谢你!

[编辑:] 我不能使用 LinQ2SQL,因为我使用 C# Express(它只支持查询本地数据库,而我的是远程数据库)

0 投票
2 回答
3949 浏览

c# - 存储过程中的企业库缓存参数?

我正在尝试与我的同事标准化一些数据访问代码。上述一位同事断言 EntLib 数据访问块试图缓存存储过程调用上的参数。

我看过反射器,有一些证据表明它可能正在缓存它们。但我认为在以下情况下不会。

任何人都可以确认或否认这一点吗?

我正在使用 EntLib 4.1

0 投票
7 回答
5415 浏览

asp.net - 从 DAL 返回到 BLL 的内容

我目前有一个应用程序,其中包括:用户界面(网页)BLL(管理器和域对象)DAL(我的每个域对象的数据访问类)。

我在 UI 中使用以下内容来搜索域对象。

这是我的 BLL

最后这是我的 DAL

如何创建一个 IBook 对象并将其返回给 Manager?我正在考虑将一个 DataTable 从 BookDB 返回到 BookManager 并让它创建 Book Object 并返回它,但这似乎不正确。还有另一种方法可以做到这一点吗?

编辑:我决定将每一层分离到一个项目中,并在尝试添加对 BLL 的引用时在 DAL 层中遇到了循环依赖问题。我无法从 DAL 访问 Book Class 或 Interface 或 BLL 中的任何内容。我应该在这里使用 ado.net 对象并让我的经理从 ado.net 对象创建实际对象吗?这是它的布局方式

谢谢!

0 投票
3 回答
474 浏览

c# - 将环境变量传递给数据访问层

我们编写的每个存储过程都必须将 clientip、serverip、windows 用户名等传递给它。

问题是我如何有效地将这些传递给 DAL?

0 投票
3 回答
4985 浏览

c#-2.0 - 用于分离数据访问、业务逻辑和表示的简单优雅模式

我需要一个简单的模式来完成上述操作。有几点需要注意:

1)我有一个类,我必须使用它来进行实际数据检索并返回 DataTable

2)我不关心支持所有可能的数据库类型的通用接口,我们坚持使用一种数据库类型。

3)我如何优雅地捕获错误并通知用户发生了错误。

4) 不要让我学习 MVC - 现在不是一个选择。

我对实际的图案设计很感兴趣。

0 投票
3 回答
1455 浏览

data-access-layer - 从业务对象中抽象出数据访问层

将数据访问代码与业务对象分离并不是什么新鲜事,但我一直在寻找实现某些目标的“最佳方式”。

我有以下课程:

橙色 - 这是我的业务对象。

OrangeList - 这是一个橘子列表。

用户将通过调用 OrangeList.Fetch(someCriteria) 从数据存储中获取 Orange 对象。因此,OrangeList 必须具有对数据访问层的引用 - 所以它具有属性:IDataProvider MyDataProvider。

这对我有用,但问题是我们不能单独获取一个橙色 - 我们总是必须通过 OrangeList。

Orange 和 OrangeList 中的任何一个或两者都必须来自一些持有 DataProvider 的公共对象。

这是一个问题,还是我的方法一开始就离题了?

任何提示/指针表示赞赏,谢谢。

编辑:根据下面的讨论,我检查了存储库模式。

但是对于我的项目,我认为将存储库与 DAL 进一步分开是个好主意。

所以....存储库是我获取橘子和保存橘子的方式,但仍然不知道如何。我将它委托给 IDataProvider,它可能是图中列出的一些。

澄清一下 - Orange 不知道如何获取/更新自己,对吧?这是一个纯粹的业务对象——这就是重点吗?

替代文字 http://img22.imageshack.us/img22/2460/repositorya.jpg

如果你想知道,我的“LegacyDataProvider”是为了支持一个旧系统,它访问一个基于文件的数据库(FoxPro,eek)——但这让我可以把它包装起来,让它远离我的新代码。

在 .NET 程序集构造方面,为了防止循环引用,看起来我将拥有一个 Repository.DLL [OrangeRepo]、一个 DataProviderInterface.DLL [IDataProvider] 和一个 BusinessObjects.dll [Orange]。都好?

那我有没有关于存储库的想法?

0 投票
4 回答
378 浏览

reflection - 数据映射代码还是反射代码?

将数据从数据库表中获取到代码中的对象似乎总是很普通的代码。我发现有两种方法可以做到这一点:

  1. 有一个代码生成器,它读取数据库表并创建类和控制器以将数据字段映射到类字段或
  2. 使用反射获取数据库字段并在类中找到它。

上述2种方法注意到的问题如下

  • 方法 1 在我看来好像我遗漏了一些东西,因为我必须为每个表创建一个控制器。
  • 一旦您进入繁重的数据访问代码,方法 2 似乎太费力了。

我应该尝试将数据从数据库获取到我的对象上吗?

0 投票
2 回答
421 浏览

subsonic - SubSonic 部署和更改连接字符串

我使用 Subsonic 为我的一个 Web 应用程序构建了 DAL。当我将它从我的测试服务器移动到生产服务器时,我将连接字符串更改为指向生产数据源,但应用程序仍然针对测试数据库运行。除了 Web.config 之外,连接信息是否存储在其他地方?

部署使用 Subsonic 构建的 Web 应用程序的最佳实践是什么?

TIA

约翰