除了 dbml 文件之外,您还可以使用 DAL 做啥
Posted
技术标签:
【中文标题】除了 dbml 文件之外,您还可以使用 DAL 做啥【英文标题】:What more you can do with your DAL other than dbml file除了 dbml 文件之外,您还可以使用 DAL 做什么 【发布时间】:2011-07-18 15:40:41 【问题描述】:注意:我不是专家,所以如果您觉得这个问题很愚蠢/蹩脚,请原谅并注意您的业务。 :)
好的,正如所有视频教程所述,创建一个 LinqToSqlClasses 项 (dbml) 文件。拖动表格,我们就完成了。
但在我的情况下(或者可能在所有现实世界的场景中),我们需要数据访问层提供的不仅仅是自动生成的类,对吧?
例如:在一个简单的会计软件中:我有一个 Accounts 表和一个 AccountingTransactions 表,
现在要获取任何帐户的分类帐,我们需要编写一个相当冗长的 sql 查询,试算表、日记账和单一凭证等也是如此。
我们可以在 DAL 中做些什么来优化这些查询以获得最佳性能。
【问题讨论】:
【参考方案1】:我建议使用实体框架而不是 Linq to SQL。
但是在这两种情况下,您都可以使用 Linq 进行此类查询。此外,这为您提供了更好的设计器支持(智能感知、强类型、编译时检查)
EF 或 LinqToSQL 成为较低级别的 DAL,在此之上,您可以使用存储库模式以松散耦合的方式调用您的数据对象。如果需要封装,您还可以为某些存储库添加特殊方法以特定方式查询数据。
您应该使用 Entity Framework 或 LinqToSql 搜索存储库模式,您会发现几个实现。
看到这个答案: Advantage of creating a generic repository vs. specific repository for each object?
【讨论】:
以上是关于除了 dbml 文件之外,您还可以使用 DAL 做啥的主要内容,如果未能解决你的问题,请参考以下文章
除了实例化 DAL 的 BLL 之外,还有啥选项允许在 n 层解决方案中进行单元测试,而不会将 DAL 暴露给 UI 或将 BLL 暴露给 DAL?