标签: data-access-layer

数据访问层的目的是什么?

我很久以前就开始了一个项目,并在我的解决方案中创建了一个数据访问层项目,但从未开发过任何内容.数据访问层的目的是什么?有没有什么好的资料可以让我了解更多有关数据访问层的信息?

terminology data-access-layer

16
推荐指数
6
解决办法
3万
查看次数

如何确定列是否在其表的主键中?(SQL Server)

我目前正在使用......

select Table_Name, Column_name, data_type, is_Nullable
from information_Schema.Columns
Run Code Online (Sandbox Code Playgroud)

...为了生成DataAccess Layer,确定给定数据库中列的信息.

从哪里可以检索有关这些列是否是其表的主键中的参与者的信息?

sql-server code-generation data-access-layer primary-key

16
推荐指数
2
解决办法
3万
查看次数

在单独的数据访问和业务逻辑层中,我可以在业务层中使用Entity框架类吗?

在单独的数据访问和业务逻辑层中,我可以在业务层中使用Entity框架类吗?

编辑:我认为我将来不需要从我的业务逻辑中交换出数据访问层(即将是SQL Server),但是我将用于UI层.因此,问题更多的是在业务层中为我使用EF类有什么主要问题吗?好像管道代码会少一些.

c# entity-framework business-logic data-access-layer

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

django models =业务逻辑+数据访问?或者数据访问层应该从django模型中分离出来?

在Django中,建议的软件架构是将所有业务逻辑和数据访问放在模型中.

但是,一些同事建议数据访问层应该与业务逻辑(业务服务层)分开.他们的理由是,如果使用不同的数据源,数据访问层可以隔离更改.他们还说,存在可以在多个模型中的业务逻辑.

但是,当我使用单独的数据访问和业务逻辑层开始编码时,数据访问层很简单(基本上是定义数据库模式的模型代码),它似乎没有增加太多价值.

从django模型中分离数据访问是否真的有价值,或者django是否已经为其ORM提供了足够的数据访问层?

我正在寻找已经实施了相当数量的django应用程序并了解他们的意见的开发人员.这适用于中小型Web应用程序.

django design-patterns business-logic-layer data-access-layer django-models

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

在Dapper中执行带有参数的存储过程

我正在使用Dapper(感谢Sam,很棒的项目.)带有DAL的微型ORM,由于某种原因,我无法使用输入参数执行存储过程.

在示例服务中,我有以下代码:

public void GetSomething(int somethingId)
{
    IRepository<Something, SomethingEnum> repository = UnitOfWork.GetRepository<Something, SomethingEnum>();

    var param = new DynamicParameters();
    param.Add("@somethingId", dbType: DbType.Int32, value:somethingId, direction: ParameterDirection.Input);

    var result = repository.Exec<Something>(SomethingEnum.spMyStoredProcedure, param);

    ...

}
Run Code Online (Sandbox Code Playgroud)

当触发执行存储过程时,抛出SqlException声明我需要提供'somethingId'

过程或函数'spMyStoredProcedure'需要参数'@somethingId',这是未提供的.

我的DAL类似于Pencroff的这个github项目.

我在这里错过了什么吗?

更新:我实际上是通过SomethingEnum传递commandType:

 public class SomethingEnum : EnumBase<SomethingEnum, string>
 {
    public static readonly SomethingEnum spMyStoredProcedure = new SomethingEnum("spMyStoredProcedure", "[dbo].[spMyStoredProcedure]", CommandType.StoredProcedure);

    public SomethingEnum(string Name, string EnumValue, CommandType? cmdType): base(Name, EnumValue, cmdType)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

c# sql stored-procedures data-access-layer dapper

15
推荐指数
2
解决办法
5万
查看次数

DAL,DTO和DAO在3层架构风格(包括MVC)之间有什么区别

最近我学习了ORM(对象关系映射)和3层架构风格(表示,业务和数据持久性).如果我理解正确,我可以将数据持久层分成DTO和DAO层.

我想了解,以下部分如何在数据持久层中一起工作.

  • DAL(数据访问层)
  • DTO(数据传输对象)
  • DAO(数据访问对象)

最重要的是,我了解到了这一点

在较大的应用程序中,MVC是仅N层架构的表示层.

我真的很困惑,例如在3层架构风格中它是如何可能的,其中MVC只是一个表示层,而DTO,DAO,DAL只是数据持久层的一部分.我完全迷失了.

如果有人告诉我它是如何一起工作的真相,我会很高兴的.

请不要关闭这个问题,因为有许多不同的表达方式,我看到它到处都是这些东西基本上在大型应用程序中相互关联,我无法想象它是如何工作的.

我很感激任何答案!

model-view-controller orm dao data-access-layer dto

15
推荐指数
2
解决办法
6891
查看次数

JPA为什么要使用createNamedQuery

我正在使用Hibernate API将DAO层更改为使用纯JPA API实现.看起来推荐的方法是使用实​​体管理器中的createNamedQuery.命名查询存储在模型/实体类的注释中.这对我来说没有意义.为什么要在模型对象中定义JPA查询,但在DAO中使用它们.从DAO本身使用createQuery并在DAO中定义查询甚至只是在DAO本身中定义命名查询是不是更有意义?

对于那些使用JPA API实现DAO层的人,您如何定义查询?

java hibernate jpa data-access-layer

14
推荐指数
3
解决办法
2万
查看次数

我在理解IQueryable <T>时遇到了问题

所以我想了解一下IQueryable<T>.我正在阅读的教程建议使用它,但不确定为什么.代码只是使用LINQ to SQL返回一些值.我过去做了很多次,但没有使用IQueryable<T>

为什么在我的函数中使用它返回超过1的值?

这是我的代码:

public IQueryable<Items> GetItems()
    {
        return from item in db.Items
               where item.IsActive == true
               orderby item.ItemNumber
               select item;
    }
Run Code Online (Sandbox Code Playgroud)

c# asp.net collections data-access-layer

14
推荐指数
2
解决办法
6636
查看次数

Android客户端应用程序中"数据层"的最佳实践

这是一个设计/最佳实践问题..

我是Android开发的新手,基本上是Web /移动解决方案的新手.

所以,我的问题是 - 在组织从远程服务器获取数据的android应用程序结构时,最佳做法是什么?

应该请求服务器进入一个与服务器进行通信的类(获取和发布请求),还是应该将我的请求看作数据源,这意味着每个数据类都为自己管理它?

或者我应该有更多抽象级别 - 一个级别用于获取数据,另一个级别用于使用某些接口但不知道源数据来自哪个?

我很好奇Android开发人员如何处理这些设计问题......

android design-patterns data-access-layer remote-access application-design

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

实体框架中多个"包含"的最佳实践是什么?

假设我们在数据模型中有四个实体:Categories,Books,Authors和BookPages.还假设Categories-Books,Books-Authors和Books-BookPages关系是一对多的.

如果从数据库中检索类别实体实例 - 包括"Books","Books.BookPages"和"Books.Authors" - 这将成为一个严重的性能问题.而且,不包括它们将导致"对象引用未设置为对象的实例"异常.

使用多个Include方法调用的最佳做法是什么?

  • 写一个方法GetCategoryById并包含所有项目(性能问题)
  • 写一个方法GetCategoryById并发送一个包含的关系列表(可能,但似乎还不够优雅)
  • 编写方法,如GetCategoryByIdWithBooks,GetCategoryByIdWithBooksAndBooksPages和GetCategoryByIdWithBooksAndAuthors(不实用)

编辑:通过第二个选项我的意思是这样的:

public static Category GetCategoryById(ModelEntities db, int categoryId, params string[] includeFields)
{
    var categories = db.Categories;

    foreach (string includeField in includeFields)
    {
        categories = categories.Include(includeField);
    }

    return categories.SingleOrDefault(i => i.CategoryId == categoryId);
}
Run Code Online (Sandbox Code Playgroud)

在调用时我们需要这样的代码:

Category theCategory1 = CategoryHelper.GetCategoryById(db, 5, "Books");
Category theCategory2 = CategoryHelper.GetCategoryById(db, 5, "Books", "Books.Pages");
Category theCategory3 = CategoryHelper.GetCategoryById(db, 5, "Books", "Books.Authors");
Category theCategory4 = CategoryHelper.GetCategoryById(db, 5, "Books", "Books.Pages", "Books.Authors");
Run Code Online (Sandbox Code Playgroud)

这种方法有任何明显的缺点吗?

c# architecture entity-framework data-access-layer ef-database-first

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