使用LINQ作为DAL时如何传输数据?

时间:2009-11-11 19:08:59

标签: linq linq-to-sql data-access-layer

我正在创建我的第一个基于linq的项目。 DAL由LinqToSQL类组成。逻辑层只是另一个用于保持简单的DLL。

我想知道如何将var对象(选择查询的结果)从登录层传递到表示层?

我应该在Login层和Presentation Layer之间编写自己的DTO层来将BLL转移到Presentation层,还是应该将数据序列化为XML?

谢谢,Vikas

2 个答案:

答案 0 :(得分:0)

只要您有机会将数据作为强类型类传递,我就会避免序列化。这就是你将要做的事情。我相信当.Net 4.0出来时你将能够传递vars,但在此之前,当你需要将它传递给另一个函数时,尝试将你的查询作为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);
    }
}

答案 1 :(得分:0)

将每行结果加载到一个对象中,将每个对象放入一个Collection中,然后将Collection从DAL传递到BOL,然后在将Collection传递给您的演示文稿之前,可以通过业务规则处理它。 / p>