当前位置: 代码迷 >> ASP.NET >> MVC中,使用linq,怎么解决数据权限有关问题
  详细解决方案

MVC中,使用linq,怎么解决数据权限有关问题

热度:6317   发布时间:2013-02-25 00:00:00.0
MVC中,使用linq,如何解决数据权限问题?
以前直接用sql语句执行的,例如
SQL code
select * from User where 1=1
 
根据当前登录用户的相应信息,如所在部门,职位级别等信息,在原先的sql语句上拼接查询条件,使之变成
SQL code
select * from User where 1=1 and DeptCode like '0041%' and PositionLevel > 3


这种方式,可以让我专门写个方法,在任何需要考虑数据权限的地方,在sql字符串后加上即可。

现在用linq,不知道该怎么去做,求各位大神帮助,小弟刚用MVC LINQ EF没多久。谢谢大家~

------解决方案--------------------------------------------------------
C# code
#region 查询处理            var query_products = EF.V_OrderDetail.Where(a => a.ActionType == 0 && a.Company_ID == UserInfo.CompanyID);            if (orderstate.HasValue)            {                query_products = query_products.Where(b => b.State==orderstate);            }            if (product.HasValue && product.Value > 0)            {                query_products = query_products.Where(b => b.Product_ID == product.Value);            }            if (datebegin != null && datebegin.IsDatetime())            {                DateTime begin = datebegin.ToDateTimeShort();                query_products = query_products.Where(a => a.ActionTime >= begin);            }            if (dateend != null && dateend.IsDatetime())            {                DateTime end = dateend.ToDateTimeShort().AddDays(1);                query_products = query_products.Where(a => a.ActionTime < end);            }            if (!string.IsNullOrEmpty(disti_name))            {                query_products = query_products.Where(a => a.CustomerCompany.Contains(disti_name));            }            if (!string.IsNullOrEmpty(orderSN))            {                query_products = query_products.Where(a => a.OrderSN.Contains(orderSN));            }            #endregion
------解决方案--------------------------------------------------------
1L正解,如果要想进一步灵活控制查询条件生成,可以Google“Linq 表达式树”。
  相关解决方案