ef执行原生sql语句_EF Coer 原生sql查询

///

///执行mysql原生语句///

/// 查询返回结果的Dto

/// MySQL语句

/// 超时时间

/// MySQLParameter 参数防止sql注入

/// 返回结果Dto的集合

public IList SqlQuery(string mysql, int? timeOutNum = null, params object[] parameters)where TEntity : new()

{//注意:不要对GetDbConnection获取到的conn进行using或者调用Dispose,否则DbContext后续不能再进行使用了,会抛异常

var conn =db.Database.GetDbConnection();try{

conn.Open();using (var command =conn.CreateCommand())

{if(timeOutNum.HasValue)

{

command.CommandTimeout=timeOutNum.Value;

}

command.CommandText=mysql;if (parameters.Count() > 0)

{

command.Parameters.AddRange(parameters);

}var propts = typeof(TEntity).GetProperties();var rtnList = new List();

TEntity model;objectval;using (var reader =command.ExecuteReader())

{while(reader.Read())

{

model= newTEntity();foreach (var l inpropts)

{

val=reader[l.Name];if (val ==DBNull.Value)

{

l.SetValue(model,null);

}else{

l.SetValue(model, val);

}

}

rtnList.Add(model);

}

}returnrtnList;

}

}finally{

conn.Close();

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值