代码改变世界

Linq to sql的Data层与UI层交互的方式

2010-08-31 16:25  gio.zhou  阅读(406)  评论(0编辑  收藏  举报

  之前一篇文章写了我对于使用Linq to sql取数据后如何和UI层交互的迷茫。因为方法太多了。但是我写程序有一定的固执。喜欢采取每一个种方式都有一个说法。

  比如过去使用原生态写Sql用ado.net方式交互时。要么全部返回datatable要么全部返回自定义的类。都可以。只要在每个项目本身是统一的就行。项目与项目之间不同这个无所谓。

  好了,这篇文章我要写的就是我第一个Linq to sql的方式中将采取如何的形式。(Linq to sql就看了1周。也没有做过实际项目。有错误或者不理想的地方请予以指出)。

 

  首相取数据分为2种,当表和多表联合查询。

 

  单表查询:

        public static IQueryable<Ic_Permission> GetPermissionList()
        {
            InfoCollectDBDataContext infoCollectDataContext = new InfoCollectDBDataContext();
            var obj_Ic_Permissions = from a in infoCollectDataContext.Ic_Permissions select a;
            return obj_Ic_Permissions;
        }
当表查询的话直接返回IQueryable<表明>的形式。


  多表查询:

public static IQueryable<InfoEntity> GetPermissionAndUserList()
        {
            InfoCollectDBDataContext infoCollectDataContext = new InfoCollectDBDataContext();
            var oo = from a in infoCollectDataContext.Ic_Permissions
                     from b in infoCollectDataContext.Ic_Users
                     where a.id == b.permission_id
                     select new InfoEntity() { Uid = b.uid, Permission_Name = a.permission_name };
            return oo;
        }
public class InfoEntity
    {
        public string Uid
        {
            get;
            set;
        }
        public string Permission_Name
        {
            get;
            set;
        }
    }

多表查询时返回一个作为数据载体的类。就和我过去使用自定义的Entity类贯穿Data、Bussiness、UI层的方式一样。


  方法比较土,没有新技术的运用。只是我觉得这样比较看得懂。一次和同事也讨论过这个。被说无法接受新事物。。。 不过我还是觉得适合的才是最好的。

  欢迎拍砖~