除了 dbml 文件之外,您还可以使用 DAL 做什么
注意:我不是专家,所以如果你觉得这个问题愚蠢/蹩脚,请原谅并管好你的事。 :)
好的,正如所有视频教程所述,创建一个 LinqToSqlClasses 项 (dbml) 文件。拖动表格,我们就完成了。
但就我而言(或者可能在所有现实世界场景中),我们需要数据访问层提供的不仅仅是自动生成的类,对吗?
例如:在一个简单的会计软件中:我有一个 Accounts 表和一个 AccountingTransactions 表,
现在要获取任何帐户的分类帐,我们需要编写一个相当冗长的 sql 查询,同样适用于试算表、日账簿和单一凭证等。
我们可以在 DAL 中做什么来优化这些查询以获得最佳性能。
NOTE: I am not an expert, so if you feel this question stupid/lame please forgive and mind your business. :)
Ok, as all video tutorials tell, create a LinqToSqlClasses item (dbml) file. drag tables and we are done here.
But in my case (or probably in all real world scenarios), we need more from our Data Access Layer than just the auto generated classes, right?
For Example: In a simple accounting software: i have a Accounts Table and a AccountingTransactions Table,
Now to get any account's ledger we need to write a pretty Lengthy sql query, same goes for trial-balance, day book, and Single Vouchers et cetera.
What can we do in DAL to optimize these queries to have best performance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议使用实体框架而不是 Linq to SQL。
但在这两种情况下,您都可以使用 Linq 来执行此类查询。另外,这为您提供了更好的设计器支持(智能感知、强类型、编译时检查)
EF 或 LinqToSQL 成为较低级别的 DAL,在此之上,您可以使用存储库模式以松散耦合的方式调用数据对象。如果需要封装,您还可以为某些存储库添加特殊方法,以特定方式查询数据。
您应该使用 Entity Framework 或 LinqToSql 搜索存储库模式,您会发现几个实现。
看这个答案:
创建每个对象的通用存储库与特定存储库?
I would recommend using Entity Framework over Linq to SQL.
But in both these cases, you have the power of Linq for such queries. Plus this gives you better designer support (intellisense, strong types, compile time checking)
EF or LinqToSQL becomes the lower level DAL and on top of this you would use the Repository pattern to call your Data Objects in a loosely coupled way. You could also add special methods for certain repositories to query data in a specific way if this needs to be encapsulated.
You should search SO for the repository pattern with Entity Framework or LinqToSql, you'll find a couple of implementations.
See this answer :
Advantage of creating a generic repository vs. specific repository for each object?