使用 LINQ 作为 DAL 时如何传输数据?
Posted
技术标签:
【中文标题】使用 LINQ 作为 DAL 时如何传输数据?【英文标题】:How to transfer data when using LINQ as DAL? 【发布时间】:2010-12-15 14:25:17 【问题描述】:我正在创建我的第一个基于 linq 的项目。 DAL 由 LinqToSQL 类组成。而逻辑层只是另一个保持简单的DLL。
我想知道如何将 var 对象(选择查询的结果)从登录层传递到表示层?
我应该在登录层和表示层之间编写自己的 DTO 层以将 BLL 传输到表示层还是应该将数据序列化为 XML?
谢谢,维卡斯
【问题讨论】:
【参考方案1】:只要您有机会将数据作为强类型类传递,我就会避免序列化。这就是你必须要做的。我相信当 .Net 4.0 出现时,您将能够传递 var,但在此之前,当您需要将查询传递给另一个函数时,请尝试将查询返回为 IEnumerable 而不是 var。
IE:
public class myClass
public int RecordID get; set;
public string Field1 get; set;
public void GetDataAndSendToOtherLayer()
using (DBDataContext db = new DBDataContext)
IEnumerable<myClass> Recs =
from tab in db.table
select new myClass
RecordID = tab.RecordID,
Field1 = tab.Field1
;
OtherLayer.DoSomething(Recs);
【讨论】:
【参考方案2】:将每行结果加载到一个对象中,将每个对象放入一个集合中,然后将集合从 DAL 传递到您的 BOL,然后在集合传递到您的演示文稿之前,您的业务规则可以处理它。
【讨论】:
以上是关于使用 LINQ 作为 DAL 时如何传输数据?的主要内容,如果未能解决你的问题,请参考以下文章
DAL/BLL 和客户端/服务器:客户端应该使用 BLL 还是 DAL 对象进行演示?或者可能是另一层(数据传输对象?)