日期:2014-05-20  浏览次数:20952 次

linq to entity绑定gridview要修改其中一个字段属性
表User有UserID和RoleID两个字段,表Role有RoleID和RoleName两个字段,我现在要将UseID和RoleName绑定到gridview,怎么设计啊??
1.为提高查询效率,数据库没有外键,所以不能用导航属性
2.我用的是三层结构,所以不能这样写: 

var query = from u in db.User join r in db.Role on u.RoleID equals r.RoleID select new {UserID=u.UserID,RoleName=r.RoleName};

因为在层与层之间调用还是用的实体对象,如果使用上述代码,我要定义新的对象,才能传输数据,工作量太大。
要实现这种样子,有什么好的方法或者思路么????急!

------解决方案--------------------
 不论是三层还是MVC  MVP 
 查询使用匿名类,都是不可取的
 
三层中在BL层这样写:
var query = from u in db.User join r in db.Role on u.RoleID equals r.RoleID select new MUsers{UserID=u.UserID,RoleName=r.RoleName};

Model层定义MUsers class
------解决方案--------------------
引用:
对数据库的查询不是应该放在DAL层吗,BLL层应该是写业务逻辑的吗
我就是想有没有别的方法,不用自己定义新的类,里面对象太多,要修改的幅度也很大啊

肯定要定义一个对象保存数据啊
------解决方案--------------------
    选择得到查询的条件,查询出来的结果用集合保存,喜欢当前结果集合,修改指定字段的值,提交修改,在LINQ中一般都是这样子做的,如果你不查,orm根本就不知道你的对象是哪一个,或者他会直接认为你的对象是一个新的对象了。
------解决方案--------------------
再写个ViewModel是最好的选择!