问题标签 [business-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 投票
4 回答
3811 浏览

c# - 返回可查询或列表在存储库中

目前我正在使用 sqlite 构建一个 Windows 应用程序。在数据库中有一个表说User,在我的代码中有一个Repository<User>和一个UserManager。我认为这是一个非常常见的设计。在存储库中有一个List方法:

如果我想做一些复杂的事情,这会带来一个问题UserManager.cs

可以看到,returnList<User>带来了性能问题,因为查询执行得比预期的要早。现在我需要将其更改为类似IQueryable<T>

TableQuery<T>是sqlite驱动的一部分,几乎等同IQueryable<T>于EF中的,提供查询,不会立即执行。但现在的问题是:在 中UserManager.cs,它不知道什么是 a TableQuery<T>,我需要像using SQLite.Query在业务层项目中一样添加新的引用和导入命名空间。它确实带来了糟糕的代码感觉。为什么我的业务层要知道数据库的细节?为什么业务层要知道什么是 SQLite?那么正确的设计是什么?

0 投票
4 回答
17191 浏览

c# - 在业务层中使用 Server.MapPath

我的业务层创建文件并需要将它们保存在App_Data我的 asp.net mvc 4 web 前端的文件夹中。

我可以Server.MapPath在业务层中使用来获取App_Data文件夹的物理路径。但我想避免System.Web在业务层中引用。

App_Data还有其他方法可以在业务层中获取路径吗?

0 投票
0 回答
142 浏览

logging - 在业务逻辑层获取用户名...?

我有一个我正在编写的应用程序的 Sharepoint Visual Web Part 前端。这可能与我的问题无关,因为在我看来,同样的问题实际上适用于任何 ASP.net 应用程序。

该应用程序有一个业务逻辑类和一个数据访问类。我正在尝试从业务层写入日志文件,但问题是我无法弄清楚如何从业务层获取 Sharepoint 用户的用户名。有任何想法吗?

我将 C# 与 .net 3.5 和 Visual Studio 2010 一起使用。

谢谢!!

0 投票
1 回答
482 浏览

c# - 业务层分页设计指南

WCF/C# N 层应用程序。

我们已经使用这个片段作为基本指南在我们的业务层中实现了分页。

我只是想知道-为了使分页功能可测试,我应该使分页器成为我们 Manager 类的公共属性还是将其注入构造函数中?我们已经为单元测试注入了一个存储库,但我认为沿着注入过多的路线走下去是不对的。

或者,最好将寻呼机保密?无论如何,页面大小将在配置文件中指定,所以我想我可以在测试 app.config 中指定页面大小。

0 投票
3 回答
1287 浏览

c# - 从数据访问层拉出业务逻辑

我们正在为我们的 ERP 系统编写一些支持应用程序(相当小)。

因此,直到现在我觉得我正在使用数据访问层来处理两个角色:业务层和数据访问层。

我无法决定必须将哪些内容移至单独的图层以及是否需要。我在某处读过,知道何时进行分层是智慧,知道模式只是知识。我没有足够的数量。

所以我需要一些帮助来确定什么是什么。

我目前的 DAL 处理获取数据并在其上应用基本逻辑。例如有类似的方法

GetProductAvailabilitybyItem

GetProductAvailabilitybyLot

等等

如果我需要将它们分开,我必须做什么?

我脑海中浮现的另一件事是,为了规范化我的 DAL 并使其每次(通过一种通用的 get 方法)返回不同的实体,我必须将其DataTable用作返回类型。目前我正在使用诸如List<PalletRecord>返回类型之类的东西。

我觉得我的应用程序太小了,很难(而且可能没用)区分这 2 层。

我的基本需求是构建可以被多个前端(网页、WinForms、WPF 等)使用的东西。

附加示例:

让我们谈谈一些条形码。我需要检查提取的批次记录是否有效。我正在获取 DAL 中的记录并在业务层中生成返回 bool 的方法?

然后我可以从任何演示文稿中调用 bool 方法以检查文本框是否包含有效批次?

这是不是非常简化的逻辑?

0 投票
2 回答
3686 浏览

c# - 业务层 (BLL) 数据访问层 (DAL) 和 UI 之间的通用结构?

我希望我的所有层 BLL、DAL 和 UI 共享类(具体或接口)。

这真的是一个坏习惯吗?

我不想从我的 DAL 方法返回数据表,而是返回 BLL 可以直接使用的对象。

我想要一个单独的 VS 项目,其中包含所有层都应该知道的类。

示例:我想定义一个所有层都应该知道的很多类。UI 应该能够接收批次类,以便显示或使用户能够提交要处理的批次。此外,DAL 应该能够使用批次类查询数据库并返回它们。另一方面,BLL 应该获得这些批次并将业务规则应用于它们。

如果这是完全错误的,还有哪些选择?

0 投票
3 回答
263 浏览

sql-server - ORM Mapping软件更换

我们有一个使用多个数据库(目前都是 MS SQL Server 2008 R2)的大型 Web 应用程序。这个应用程序大约有 7 年的历史,是围绕 EntitySpaces 框架构建的。它目前使用的是该框架的 2009 版,使用 C# 中的 .NET 编写并以 .NET 3.5 为目标

现在 ES 不再存在,我们需要将其更改为其他内容,并且在决定使用什么时遇到问题。

我们的数据库模式非常成熟,非常适合我们。该应用程序安装在英国的 80 多个站点中。

理想情况下,我们想要一个类似的 ORM 工具,我们可以只指向现有的数据库模式并生成我们的业务和数据访问层类。如果需要,我们不介意更新到更高的 .NET 框架。

我们的应用程序同时使用了 Entityspaces 对象并调用了一些存储过程来提供报告功能。这是我们无法改变的,因此调用参数化存储过程的能力是必不可少的。

我的问题是 - 有没有人有这样做的经验,任何人都可以推荐任何工具来试用吗?

在此先感谢,安迪

0 投票
1 回答
105 浏览

c# - 记住子项目中对象的状态

我正在一个有 2 个子项目的网站上工作。子项目的引用如下:
=> 我的网站引用了项目业务层
=> 项目业务层引用了项目数据层

访问者需要登录。信息保存在数据库中。在我的数据库中,我有不同的配置信息需要让网站计算正确的信息。

示例:
用户 A 登录网站,配置信息存储在对象名称:UserInfo中。UserInfo 类也是我的业务层的一部分。

之后,我总是必须从 cookie 或 Session 创建我的对象,并像这样调用我的业务层对象:
BL.CalculatePrice(UserInfo.RegionID)
BL.CalculateTotal(UserInfo.RegionID)

有没有办法在我的业务层项目中在网页更改之间保持“用户”对象的状态,而无需从网站的每次调用 中发送参考(UserInfo.RegionID) ?

0 投票
0 回答
78 浏览

stored-procedures - 存储过程中的业务逻辑

虽然我没有太多经验,但在组织和逻辑思维方面,我非常喜欢将业务逻辑放在 BLL 层,反对将任何业务逻辑放在存储过程中。

我现在开始一个新项目,不打算将任何业务逻辑放在存储过程中,但是我有一些性能问题,如果我有一些业务操作需要在执行时检查数据库中的 4 条数据,如果我做了这个操作作为存储过程,我将访问数据库一次,但如果我在业务层进行,我将不得不访问数据库 4 次。

这会对我的应用程序性能产生不可原谅的影响吗?

0 投票
0 回答
120 浏览

c# - 将逻辑放在扩展数据层实体的实体类中

我有一个关于分层架构的问题。我们正在起草一个分层架构,我们决定有一个数据层、业务层和带有视图模型的前端。我的问题是关于业务层以及将逻辑放在哪里。数据层(webservice 层)将获取所有数据并将数据转换为我们自己的实体,例如一个名为 DataLayerEntityClassA 的类。在业务层中,我们有一个类 BusinessLayerClassA,它获取转换后的数据(DataLayerEntityClassA)并进行一些逻辑排序。当我们完成逻辑后,我们返回继承类 DataLayerEntityClassA 的 BusinessLayerEntityClassA。BusinessLayerEntityClassA 类位于 BL 层中,包含一些用于搜索、查询 DataLayerEntityClassA 实体的简单逻辑。这是良好的做法还是应该在 BusinessLayerClassA 类中使用这个简单的逻辑?这样做有什么陷阱吗?

如果这很重要,我们正在使用 c# .net 3.5。