我很久以前就开始了一个项目,并在我的解决方案中创建了一个数据访问层项目,但从未开发过任何内容.数据访问层的目的是什么?有没有什么好的资料可以让我了解更多有关数据访问层的信息?
我目前正在使用......
select Table_Name, Column_name, data_type, is_Nullable
from information_Schema.Columns
Run Code Online (Sandbox Code Playgroud)
...为了生成DataAccess Layer,确定给定数据库中列的信息.
从哪里可以检索有关这些列是否是其表的主键中的参与者的信息?
在单独的数据访问和业务逻辑层中,我可以在业务层中使用Entity框架类吗?
编辑:我认为我将来不需要从我的业务逻辑中交换出数据访问层(即将是SQL Server),但是我将用于UI层.因此,问题更多的是在业务层中为我使用EF类有什么主要问题吗?好像管道代码会少一些.
在Django中,建议的软件架构是将所有业务逻辑和数据访问放在模型中.
但是,一些同事建议数据访问层应该与业务逻辑(业务服务层)分开.他们的理由是,如果使用不同的数据源,数据访问层可以隔离更改.他们还说,存在可以在多个模型中的业务逻辑.
但是,当我使用单独的数据访问和业务逻辑层开始编码时,数据访问层很简单(基本上是定义数据库模式的模型代码),它似乎没有增加太多价值.
从django模型中分离数据访问是否真的有价值,或者django是否已经为其ORM提供了足够的数据访问层?
我正在寻找已经实施了相当数量的django应用程序并了解他们的意见的开发人员.这适用于中小型Web应用程序.
django design-patterns business-logic-layer data-access-layer django-models
我正在使用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) 最近我学习了ORM(对象关系映射)和3层架构风格(表示,业务和数据持久性).如果我理解正确,我可以将数据持久层分成DTO和DAO层.
我想了解,以下部分如何在数据持久层中一起工作.
最重要的是,我了解到了这一点
在较大的应用程序中,MVC是仅N层架构的表示层.
我真的很困惑,例如在3层架构风格中它是如何可能的,其中MVC只是一个表示层,而DTO,DAO,DAL只是数据持久层的一部分.我完全迷失了.
如果有人告诉我它是如何一起工作的真相,我会很高兴的.
请不要关闭这个问题,因为有许多不同的表达方式,我看到它到处都是这些东西基本上在大型应用程序中相互关联,我无法想象它是如何工作的.
我很感激任何答案!
我正在使用Hibernate API将DAO层更改为使用纯JPA API实现.看起来推荐的方法是使用实体管理器中的createNamedQuery.命名查询存储在模型/实体类的注释中.这对我来说没有意义.为什么要在模型对象中定义JPA查询,但在DAO中使用它们.从DAO本身使用createQuery并在DAO中定义查询甚至只是在DAO本身中定义命名查询是不是更有意义?
对于那些使用JPA API实现DAO层的人,您如何定义查询?
所以我想了解一下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) 这是一个设计/最佳实践问题..
我是Android开发的新手,基本上是Web /移动解决方案的新手.
所以,我的问题是 - 在组织从远程服务器获取数据的android应用程序结构时,最佳做法是什么?
应该请求服务器进入一个与服务器进行通信的类(获取和发布请求),还是应该将我的请求看作数据源,这意味着每个数据类都为自己管理它?
或者我应该有更多抽象级别 - 一个级别用于获取数据,另一个级别用于使用某些接口但不知道源数据来自哪个?
我很好奇Android开发人员如何处理这些设计问题......
android design-patterns data-access-layer remote-access application-design
假设我们在数据模型中有四个实体:Categories,Books,Authors和BookPages.还假设Categories-Books,Books-Authors和Books-BookPages关系是一对多的.
如果从数据库中检索类别实体实例 - 包括"Books","Books.BookPages"和"Books.Authors" - 这将成为一个严重的性能问题.而且,不包括它们将导致"对象引用未设置为对象的实例"异常.
使用多个Include方法调用的最佳做法是什么?
编辑:通过第二个选项我的意思是这样的:
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
c# ×4
android ×1
architecture ×1
asp.net ×1
collections ×1
dao ×1
dapper ×1
django ×1
dto ×1
hibernate ×1
java ×1
jpa ×1
orm ×1
primary-key ×1
sql ×1
sql-server ×1
terminology ×1