专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > .NET Framework

求高手赐教~怎么用DbContext将DbDataReader转换为实体类型的对象

发布时间:2011-06-23 14:01:24 文章来源:www.iduyao.cn 采编人员:星星草
求高手赐教~如何用DbContext将DbDataReader转换为实体类型的对象?
之前用ObjectContext是这样写的:
public virtual List<U> ExecuteProcedure<U>( string procName , params DbParameter[] Parameters )
{
     ........
    var rdr = com.ExecuteReader();
    list = context.ObjectContext.Translate<U>(rdr).ToList();
    ....
}

现在用EF 5,换成了DbContext,请问应该如何实现?求教~~
------解决方案--------------------
从 DbDataReader 本身就可以轻松读取实体对象。

例如你有类型
public class MyObj
{
    public string Name;
    public double Value;
}


那么你可一写

            List<MyObj> result;
            using (var conn = new OracleConnection(cnStr))
            {
                conn.Open();
                var comm = conn.CreateCommand();
                comm.CommandText = "select * from ..........";
                comm.CommandType = System.Data.CommandType.Text;
                result = ( from DbDataRecord record in comm.ExecuteReader()
                            select new TableDefine { 
                                            Name = (string)record["TheName"],
                                            Value = (double)record["Number"]
                                       };
                         ).ToList();
            }   
 

来直接读取。或者如果你是自己写了一个 DBHelper 中封装了“Query方法”,那么你可以把这里的 select 部分定义为一个委托,例如
public void Query<T>(string sql, DbParameter[] Parameters,Func<DbDataReader, T> formater)
{
    ............
                result = ( from DbDataRecord record in comm.ExecuteReader()
                            select formater(record)).ToList();
    ............
    


根本用不着借助 EF 这种东西。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: