标签: data-access-layer

业务逻辑或数据访问层的Web服务

这篇文章http://www.theserverside.net/tt/articles/showarticle.tss?id=Top5WSMistakes 鼓励我为业务逻辑层创建Web服务,但很多人在数据访问层中使用它.

我想创建一个项目,我想从桌面应用程序,网站和手机访问相同的数据存储库.你会推荐我什么?

在任何情况下,为两个层实现Web服务可能是个好主意吗?

web-services business-logic data-access-layer

2
推荐指数
1
解决办法
5340
查看次数

将软件划分为多个模块是否更好,每个模块都有自己的数据库

我正在开发一个主要在asp.net开发的医疗保健应用程序,Oracle 11g作为后端.在当前状态下,应用程序分为3层,即UI,BLL和DAL.由于BLL和DAL是类库项目,因此它们被部署为单个dll(一个用于BLL,另一个用于DAL).最近,该软件被审查了另一位开发人员,他提出了将整个软件划分为单独模块的建议,每个模块都有自己的项目和数据库,即库存模块作为InventoryUI(asp.net Web应用程序项目,InventoryBLL(类库项目)和InventoryDAL(类库项目).所有模块获得三个不同的项目,其中单独的数据库通过Web服务相互通信.

所以我的问题是

  1. 这个建议的架构比我们的更好吗?
  2. BLL和DAL有多个dll是否更好?优缺点都有什么.
  3. 单个应用程序有多个数据库是否更好?怎么样?

任何链接,建议都非常欢迎.

architecture data-access-layer bll

2
推荐指数
1
解决办法
2738
查看次数

将 IDataReader 映射到 C# 对象的最有效方法,同时也适合深度复制?

我们有一个场景,我们使用 Enterprise Library Data 包来满足我们的数据访问需求。我们实现了一个通用数据读取器来将我们的数据合并到业务对象中。然而,我们正在寻找一种更有效的方法来做到这一点,这也将满足对象内子集合的深度复制,而无需使用反射,因为我们正在处理大量数据。通用数据读取器在处理大量数据时也表现不佳。我知道如果我们使用 EF,它可以解决这个问题,但我们还没有达到可以替换整个数据访问层的阶段。是否有替代方案或行业标准来实现这一目标?

c# performance entity-framework data-access-layer idatareader

2
推荐指数
1
解决办法
3950
查看次数

通过 ID 获取 Shopware 6 实体的推荐方法是什么?

我有一个实体 ID,想通过存储库获取实体对象,目前我们这样做

$criteria = new Criteria();
    $criteria->addFilter(new EqualsFilter('id', $propertyId));

    $property = $this->propertyGroupOptionRepository->search(
        $criteria,
        $this->context
    )->first();

    if($property) {
        return $property->get('groupId');
    }
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法,比如 Laravel 的find方法?

data-access-layer shopware

2
推荐指数
1
解决办法
1425
查看次数

适用于大型应用程序的数据访问策略

我即将重新开始在.NET 3.5sp1中重写VB6应用程序.VB6应用程序写得很好,数据层完全基于存储过程.我想使用像Linq2SQL/Entity Framework/NHibernate/SubSonic这样自动化的东西.不可否认,除了一次性项目之外,我还没有使用过任何这些工具.

我担心所有这些选择可能带来的潜在问题是速度.例如,现在要检索单行(或整个列表),我使用以下sproc:

ALTER PROCEDURE [dbo].[lst_Customers]
 @intID     INT = NULL
,@chvName   VARCHAR(100) = NULL
AS

SELECT   Customer_id, Name
FROM dbo.Customer
WHERE (@intID IS NULL OR @intID = Customer_id)
 AND (@chvName IS NULL OR Name like ('%' + @chvName + '%'))
ORDER BY name
Run Code Online (Sandbox Code Playgroud)

要在Linq2SQL/Entity Framework/NHibernate/SubSonic中检索单行,这些解决方案是否必须将整个列表下载到客户端并找到我需要的行?

那么,对于具有大型数据域的应用程序,数据访问策略的共识是什么?

.net vb6 legacy stored-procedures data-access-layer

1
推荐指数
1
解决办法
898
查看次数

asp.net MVC ddd DRY vs松散耦合和持久性/数据访问层

因此,我理解它具有良好的松散耦合,我应该能够在应用程序根目录中使用几行代码替换我的DAL.

我有2个DAL编写,Linq-to-sql和一个JSon文件存储库(用于测试,因为我想试用System.Web.Scripting.JavascriptSerializer).

linq to sql将创建实体而不是我的商业模式.并通过在应用程序根目录中使用构造函数注入的IRepository向上提供它们.

我的JSon层没有任何自动生成的类可以反序列化,所以我迷失了一个简单的方法,让它依赖于接口或抽象类,仍然是函数.

这个问题基于以下假设/理解:

  • 我相信我需要linq到sql层来实现一个接口,所以编译时的应用程序域可以指示实体类将有一个位置来读/写所有当前模型的字段
  • 任何业务逻辑都要求在模型层中具有几乎相同名称和相同属性的另一组类
    • 然后需要采用DAL对象并将它们转换为业务对象并返回的转换方法.(即使双方都在实现相同的界面,这似乎效率很低)
      • 如果模型类或接口发生更改(接口,业务类,视图,dal实体),此代码是另一个必须进行更改的地方
  • 任何替代DAL的反序列化都要求我在该层中创建具有相同属性和字段的"实体"(更多重复)

因此,为了满足所有灵活性/敏捷性目标,我需要为每个应用程序域/业务对象提供一个接口,一个业务逻辑可以存在的具体类,以及实现该接口的DAL对象(这意味着不自动生成实体的层)必须是手工编码纯复制).

如何在没有大量重复和DRY损失的情况下使用松耦合?

asp.net-mvc domain-driven-design data-access-layer dry

1
推荐指数
1
解决办法
1184
查看次数

为Web应用程序创建全局变量 - ASP.NET

我正在构建我的Web应用程序以连接db.到目前为止,我已设法处理它,(虽然我没有建立BLL和DAL).

我有一个表"id"列.我知道有一种方法可以在SQL Server中声明它自动递增.(但我不想要它).

我想声明一个将保存该值的全局应用程序变量.

我有两个问题:

  1. 我是怎么声明的?

  2. 我在哪里创建并初始化它?(我有几个登录页面).

谢谢!

PS

如果有人告诉我如何使用我的存储过程构建DAL会有所帮助?为了我需要你使用BLL,我不能在DAL做?

sql-server asp.net data-access-layer global-variables bll

1
推荐指数
1
解决办法
9389
查看次数

使用TransactionScope时避免启用MSDTC

[使用:C#3.5 + SQL Server 2005]

我在Business Layer中有一些代码,它们在TransactionScope中包含订单的创建及其详细信息:

        DAL.DAL_OrdenDeCompra dalOrdenDeCompra = new GOA.DAL.DAL_OrdenDeCompra();
        DAL.DAL_ItemDeUnaOrden dalItemDeUnaOrden = new GOA.DAL.DAL_ItemDeUnaOrden();            
        using (TransactionScope transaccion = new TransactionScope())
        {
            //Insertion of the order
            orden.Id = dalOrdenDeCompra.InsertarOrdenDeCompra(orden.NumeroOrden, orden.PuntoDeEntregaParaLaOrden.Id, (int)orden.TipoDeCompra, orden.FechaOrden, orden.Observaciones);
            foreach (ItemDeUnaOrden item in orden.Items)
            {                       
                //Insertion of each one of its items. 
                dalItemDeUnaOrden.InsertarItemDeUnaOrden(orden.Id, item.CodigoProductoAudifarma, item.CodigoProductoJanssen, item.CodigoEAN13, item.Descripcion, item.CantidadOriginal, item.ValorUnitario);
            }
            transaccion.Complete();
        }
        return true;
Run Code Online (Sandbox Code Playgroud)

以下是执行插入的DAL代码:

public int InsertarOrdenDeCompra(string pNumeroOrden, int pPuntoEntregaId, int pTipoDeCompra, DateTime pFechaOrden, string pObservaciones)
    {
        try
        {
            DataTable dataTable = new …
Run Code Online (Sandbox Code Playgroud)

c# transactions data-access-layer transactionscope

1
推荐指数
1
解决办法
8222
查看次数

具有业务层和DAL的WPF架构

我在WPF中开始一个新的应用程序,我希望它有一个良好的架构,以便它可以维护.我正在使用实体框架,到目前为止我计划的是.

•查看图层:一个项目(启动),包含启动视图和主菜单.每种类型的视图都有不同的项目,例如,如果我有与Books相关的视图,那么我将有一个名为BooksView的项目,其中包含所有视图.

•业务层:每种业务类的一个项目,例如BusinessBooks.每个人都有一个具有特定操作的存储库和任何帮助器,如果需要可以进行计算.

•数据访问层:它包含一个名为Entity Framework的文件夹,其中包含DBContext和T4生成的类以及一个名为ContextCreator的类,其中包含以下代码:

public class ContextCreator : IDisposable
{
    private MesaOperativaDB context;

    public ContextCreator()
    {
        context = new MesaOperativaDB();
    }

    public MesaOperativaDB getContext()
    {
        return context;
    }

    public void Dispose()
    {
        context.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,视图将使用所需的业务层的任何项目的静态存储库,并且此存储库将使用上面的类来获取DBContext并使用它如下所示:

    public static List<Novedades> GetNovedades()
    {
        using (ContextCreator db = new ContextCreator())
        {
            IQueryable<Novedades> novedades = db.getContext().Set<Novedades>().AsQueryable();
            return novedades.ToList();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这种做法有什么好处吗?提前谢谢你们.

c# architecture wpf entity-framework data-access-layer

1
推荐指数
1
解决办法
4207
查看次数

从DAL返回的对象的DTO等价术语是什么?

我已经在使用DTO通过网络进行数据传输。现在,我还将不同的DTO类引入DAL。这是为了避免跨层传递应用程序(业务)对象。

为避免命名混乱,我想使用DTO以外的其他术语,但找不到一个好的术语。

从DAL返回的对象的DTO等价术语是什么?

data-access-layer dto

1
推荐指数
1
解决办法
846
查看次数