【问题标题】:How to transfer data when using LINQ as DAL?使用 LINQ 作为 DAL 时如何传输数据?
【发布时间】:2010-12-15 14:25:17
【问题描述】:

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

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

我应该在登录层和表示层之间编写自己的 DTO 层以将 BLL 传输到表示层还是应该将数据序列化为 XML?

谢谢,维卡斯

【问题讨论】:

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


    【解决方案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,然后在集合传递到您的演示文稿之前,您的业务规则可以处理它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-13
        • 2010-10-31
        • 2015-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        相关资源
        最近更新 更多