EF 中 自定义的参数查询

EF 中如果要用到自定义的参数查询,则如下扩展可以是查询更加方便



public  static  class EntityFrameworkDbExtention
    {
         public  static IEnumerable<T> SqlQueryParameter <T>( this System.Data.Entity.Database database,  string sql,  object parameters =  null)
        {
             if (parameters ==  nullreturn database.SqlQuery<T>(sql);
             using ( var tmp_cmd = database.Connection.CreateCommand())
            {
                 var dict = ToDictionary(parameters);
                 int i =  0;
                 var arr =  new  object[dict.Count];
                 foreach ( var one_kvp  in dict)
                {
                     var param = tmp_cmd.CreateParameter();
                    param.ParameterName = one_kvp.Key;
                    param.Value = one_kvp.Value ?? DBNull.Value;
                    arr[i] = param;
                    i++;
                }
                 return database.SqlQuery<T>(sql, arr);
            }
        }
         private  static IDictionary< stringobject> ToDictionary( object data)
        {
             const BindingFlags attr = System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance;
             return data.GetType().GetProperties(attr).Where(property => property.CanRead).ToDictionary(property => property.Name, property => property.GetValue(data,  null));
        }
    }



var p = db.Database.SqlQueryParameter<ppc_account>( " select * from ppc_account where id=2 ").FirstOrDefault();

转载于:https://www.cnblogs.com/hujingang/archive/2012/10/18/2729442.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值