【发布时间】:2010-12-15 14:25:17
【问题描述】:
我正在创建我的第一个基于 linq 的项目。 DAL 由 LinqToSQL 类组成。而逻辑层只是另一个保持简单的DLL。
我想知道如何将 var 对象(选择查询的结果)从登录层传递到表示层?
我应该在登录层和表示层之间编写自己的 DTO 层以将 BLL 传输到表示层还是应该将数据序列化为 XML?
谢谢,维卡斯
【问题讨论】:
标签: linq linq-to-sql data-access-layer
我正在创建我的第一个基于 linq 的项目。 DAL 由 LinqToSQL 类组成。而逻辑层只是另一个保持简单的DLL。
我想知道如何将 var 对象(选择查询的结果)从登录层传递到表示层?
我应该在登录层和表示层之间编写自己的 DTO 层以将 BLL 传输到表示层还是应该将数据序列化为 XML?
谢谢,维卡斯
【问题讨论】:
标签: linq linq-to-sql data-access-layer
只要您有机会将数据作为强类型类传递,我就会避免序列化。这就是你必须要做的。我相信当 .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);
}
}
【讨论】:
将每行结果加载到一个对象中,将每个对象放入一个集合中,然后将集合从 DAL 传递到您的 BOL,然后在集合传递到您的演示文稿之前,您的业务规则可以处理它。
【讨论】: