1.用了linq后,不需要再写存储过程(小项目),那么dal层里应该做什么。
2.使用linq更改数据,不知道大家是用什么方法。
我用的是在页面new一个对象,将变更的字段改好后,发给后台。然后后台再把那条数据查出来,再对其进行更改。
感觉这样有点重复,如果直接在页面把数据取出更改好,直接submitchange是不是更好?
3.用select new出来的数据只能用IQueryable接口给DataSource,不能tolist对其字段进行更改。
现在我想到的方法是在model里加扩展类,新增属性,在get里调用dal的方法取值。

解决方案 »

  1.   

    1. linq也是可以调用存储过程的。dal里就是放一写linq语句,表达式,返回结果集了之类的。
    2.直接把新值传到数据访问层当做参数更改就是了。
    3.  StudentDataContext sdc = new StudentDataContext();
            /// <summary>
            /// 查询某些字段至List集合
            /// </summary>
            public List<STUDENT> GetList()
            {
                var q = from s in sdc.STUDENT
                        select new STUDENT{SSEX= s.SSEX,SNAME= s.SNAME};
                return q.ToList(); 
            }
      

  2.   

    http://worldwu.cn/Topic.aspx?tid=59
    我的网站,我的贴:Linq简单三层之DAL层实例! 
    见笑了~
      

  3.   

    1.看来也就这些了
    2.也就是说不用object传递,直接传参数,那么如果参数很多呢?
    3.抱歉我没说清楚。我用的是System.Linq.Dynamic,select("new Id")这种形式,不能tolist()
      

  4.   

    1.数据访问层和写SQL或者是其它读取XML数据一样,也是需要去把数据取出来,不同的是LINQ自己就把那些object生成好了,不像用sql取数据那样还得自己去把数据放到object中。同样的,在数据访问层的update,insert等等方法还是需要写的,只是它用的是LINQ语法去写。2.这个问题我不明白你为啥要保存数据后再次load出来,你保存之前让页面上更新数据的同时去submitchange数据库不就行了,没必要再次去把数据重新load出来。
    3.第三个问题我不大清楚。我使用时返回结果一般都会是LINQ自动生成的那个类。不会去把结果搞出来再放到list。
      

  5.   

    1.LINQ写得DAL层和其它方法一样还是需要写update,insert等方法的,只是它可以使用linq的语法让代码更少,你不需要像写SQL那样需要把select或者是从BLL得来的数据再次转化格式。它本身就生成好了。
    2.绝对没有必要前台提交数据后,先去submitchange再重新load数据。你应该明确下:前台数据的更改完全可以在前台更新,在更新前台得同时后台再去更改后台。我个人绝对不推荐再次load数据出来重绑定。
    3.第三个问题我不大明白。没用过你那个System.Linq.Dynamic。