问题标签 [data-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 回答
94 浏览

sql-server-2008 - 哪些 DAL 库支持存储过程执行和结果实现

我习惯了 EF,因为只要您更好地了解它,它通常就可以正常工作,因此您知道如何优化查询。但。

当您知道您将处理大量数据时,您会选择什么?我知道我不想首先使用 EF 并削弱我的应用程序。我会编写高度优化的存储过程并调用它们以获得某些非常狭窄的结果(有很多连接,所以它们可能不会只返回某些实体)。

所以我有点困惑我应该使用哪个 DAL 技术/库?我不想使用 SqlConnection/SqlCommand 的方式来做这件事,因为我必须编写更多可能隐藏一些晦涩错误的代码。

我想让错误表面尽可能小,并使用一种能够适应我的过程的技术,而不是反之亦然......

是否有任何图书馆可以让我:

  • 按名称提供简单 SP 执行的方法
  • 提供返回数据的自动物化,以便我可以通过 lambda 函数提供某些物化器?

像:

甚至调用返回多个结果集的存储过程等。

基本上最后一个是行不通的,因为这个不知道如何将两者结合在一起......但你明白了。

因此,将其全部归结为一个问题:是否有针对存储过程执行和数据实现进行优化的 DAL 库?

0 投票
7 回答
2582 浏览

c# - 三层架构

我对三层架构有一些疑问。

  1. 如何正确实现三层架构的应用程序?
  2. 这些层之间如何通信?
  3. 数据层是否完全等同于 DBMS?(如果我们使用存储过程又如何呢?如果我们使用对象关系映射框架呢?)

期待听到您的回答。谢谢。


PS:请不要理解我在问一个笼统的问题。好的 ?我在问如何正确设计大型应用程序。什么是最好的方法?。不期待很长的答案。

0 投票
3 回答
270 浏览

.net - 升级 .NET 应用程序数据层

我在一家开发非常大规模的基于数据的应用程序的公司工作。该应用程序最初是在大约十年前创建的,因此迫切需要升级。我的任务是调查和实施数据层升级。

目前,它使用的系统具有所有基于/扩展DataRow对象的业务对象,即 - 每个对象或多或少与数据库中的一行相关。该应用程序目前不是面向对象的,但这会导致很多问题,我们希望朝着 OO 方向发展。

因此,我们希望开始使用 .NET `Entity Framework' 并创建一个 .edmx 文件。这个想法只是将所有 SQL 数据库表拖到 .edmx 设计器上,并让它创建相关的数据对象。

现在在我的脑海中(作为 OO 开发人员),我计划手动创建新的业务对象,并从新数据层中的查询返回的 .edmx 生成的数据对象中填充它们。这将允许使用接口简单地分离各个层。

问题是老板说没有足够的时间来重写大约一百个业务对象类,他建议在整个应用程序中使用 .edmx 生成的数据对象。

我脑海中的每一个念头都在说“不……不要在数据层和整个系统之间建立那种耦合”,但老板说他在网上看到过宣传这一点的文章。

所以我对你们的问题是:(请提供您对 1 和 2 的回答的正当理由)

  1. 这是一个可行的解决方案(即使是短期的)?

  2. 从生成的数据对象中创建单独的业务对象是否有更好/替代的解决方案?

  3. 有没有更好/更简单的方法从生成的数据对象中创建单独的业务对象,而不是手动复制和粘贴?

我知道这些问题有些主观,但我已经提供了尽可能多的具体信息,我真的可以就这个主题提出一些建议。

0 投票
1 回答
92 浏览

implementation - 在数据层内部实现表示层的缺点

在数据层内部实现表示层的缺点是什么。我想这将是一种动态且面向性能的方式,例如,如果我编译为代码(我的意思是完全编译,甚至编译 aspx),之后我需要进行一些设计更改,我不需要更新编译库我可以直接在这里进行更改。

如果我错了,请纠正我。

这是有人将其发布为缺点的链接。

0 投票
3 回答
138 浏览

c# - 通用查询方法

我发现我的 C# 应用程序使用大量样板文件执行大量查询,这使我的代码空间变得混乱。我也想避免重复,但我不确定如何编写一个通用的方法来做到这一点。

我正在使用 ODP 访问 Oracle 数据库。我不能使用 Linq,因为我们的数据仓库人员拒绝指定主键,而且对 Linq 的 ODP 支持似乎是……他们宁愿让你使用他们的平台。

我不能真正返回一个列表,因为每个查询都返回不同数量的不同类型。

但是确实有更多的术语和更多这样的查询。我会说 15 个左右的查询 - 有些查询返回了多达 15 个左右的字段。

到处复制/粘贴这个样板会导致很多火灾:例如,如果我不更新复制粘贴中的所有内容,我将关闭错误的阅读器(或更糟)向数据库发送不同的查询字符串。

我希望能够做这样的事情:

所以大部分样板文件都消失了。

我正在寻找简单的东西。

0 投票
1 回答
1293 浏览

c# - 数据层的 ExecuteNonQuery 连接错误

目前此测试窗口表单应用程序存在问题。构造函数用于将数据添加到 datagridview。但是,当我单击该按钮时,它无法添加任何内容来运行 sql 命令,并出现错误 ExecuteNonQuery: Connection property has not been initialized。下面是我的代码。我发现了类似问题的问题,但他们没有通过在代码中的多个点调用数据库来解决这个问题。

0 投票
4 回答
1058 浏览

c# - 如何在多层应用程序中向用户显示异常详细信息以便解决

我们的服务层中有以下代码,我们使用 EF 将新用户添加到数据库中。

这由服务层通过以下方法调用:

在到达 AddUser 之前,我们会进行某些客户端和服务器验证,但是我不确定如何处理未处理的异常。

例如,如果 context.SaveChanges() 以某种方式抛出错误,我们如何将错误详细信息返回到表示层?

我正在考虑将 try / catch 放在 AddUser 中,如下所示:

但是 AddUser 的返回类型是 User 并且我不确定发生异常时应该返回什么。如果我可以将异常详细信息返回给 UserResponse 方法,我可以在我们的响应对象中填充一些字段,这些字段用于保存错误详细信息,但现在确定从 catch 部分中返回什么。

我试图了解如何识别应该在多层应用程序中捕获和处理的异常,一个具有数据访问层、服务层、表示层等的异常。主要是想弄清楚如何向用户展示异常详细信息解析度。

谢谢

0 投票
2 回答
96 浏览

c# - “Payment.GenLedDet”因其保护级别而无法访问

我的 GenLedDet 类在里面Payment namespace

这是我在数据层中的代码片段,并且正在使用此代码。不知道为什么会出现此错误,因为我确实有另一个功能没有显示此类错误

0 投票
2 回答
987 浏览

asp.net - 每个 HTTP 请求的 DbContext,但避免依赖于数据层中的 HttpContext

我一直在考虑如何在分层应用程序中使用DbContextper的一个实例。HttpRequest我想出的解决方案之一是创建一个在事件处理程序HttpModule中初始化上下文的实例,然后在事件处理程序中处理它。HttpContext.Current.ItemsBeginRequestEndRequest

不过,上述方法带来了一个问题:我需要在我的数据层和业务层中引用 System.Web 以获取存储的DbContext实例。这可能没问题,但我宁愿避免走那条路。如果我想从非 Web 应用程序中引用和使用我的数据层和业务层怎么办?

有任何想法吗?

0 投票
1 回答
311 浏览

c# - 序列化到数据层中的文件

我正在尝试更新旧应用程序,并且需要一些有关如何组织数据级别的建议。

今天,所有数据都存储在一个二进制文件中,该文件是在二进制序列化的帮助下创建的。存储的数据是多层深的树结构。

保存数据的对象级别:

所有这些类都有很多逻辑来做不同的事情。它们还具有不应保存到文件中的状态信息。

数据在程序执行过程中不断更新,更新时由“业务逻辑”保存为二进制文件。

我尝试更新程序,但为此进行单元测试是一场噩梦。

我希望数据仍以任何方式保存在文件中。但除此之外,我愿意接受如何改进这一点的建议。

编辑:

程序很小,我不想依赖大型复杂的框架。我需要帮助的原因是尝试清理几乎整个应用程序逻辑都在一个巨大方法中的代码。