Asp.net core利用dynamic简化数据库访问

 更新时间:2022年07月01日 10:06:13   作者:天方  
这篇文章介绍了Asp.net core利用dynamic简化数据库访问的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

今天写了一个数据库的帮助类,代码如下。 

public static class DbEx
{
    public static dynamic ReadToObject(this IDataReader reader)
    {
        var obj = new DbObject();

        for (int i = 0; i < reader.FieldCount; i++)
        {
            obj[reader.GetName(i)] = new DbField()
            {
                DbData = reader[i]
            };
        }

        return obj;
    }

    public class DbObject : DynamicObject
    {
        //自己实现一个,不用ExpandoObject, 以支持无视大小写读取
        public override bool TryGetMember(GetMemberBinder binder, out object result)
        {
            result = this[binder.Name];
            return true;
        }

        Dictionary<string, object> _values = new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);

        public object this[string index]
        {
            get => _values[index];
            set => _values[index] = value;
        }
    }

    public class DbField
    {
        public object DbData { get; set; }

        public T Value<T>()
        {
            return (T)Convert.ChangeType(DbData, typeof(T));
        }

        public static implicit operator string(DbField data) => data.Value<string>();
        public static implicit operator int(DbField data) => data.Value<int>();
        public static implicit operator DateTime(DbField data) => data.Value<DateTime>();
        public static implicit operator double(DbField data) => data.Value<double>();
        public static implicit operator bool(DbField data) => data.Value<bool>();
    }
}

简单的来讲,可以把如下代码

GpsData parse(IDataReader reader)
{
    return new GpsData()
    {
        IsValid = (bool)reader["IsValid"],
        Location = new Location ()
        {
            Lon = (double)reader["Lon"],
            Lat = (double)reader["Lat"],
        },
        Angle = (double)reader["Angle"],
        Speed = (double)reader["Speed"]),
        UpdateTime = (double)reader["Speed"]),
    };
}

转换为如下形式

GpsData parse(IDataReader reader)
{
    var obj = reader.ReadToObject();
    var state = new GpsData()
    {
        IsValid = obj.IsValid,
        Location = new Location()
        {
            Lon = obj.Lon,
            Lat = obj.Lat,
        },
        Angle = obj.Angle,
        Speed = obj.Speed,
        UpdateTime = obj.UpdateTime,
    };
    return state;
}

到此这篇关于Asp.net core利用dynamic简化数据库访问的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • js与ASP.NET 中文乱码问题

    js与ASP.NET 中文乱码问题

    本文摘自一位哥们的QQ空间里,自认为方案比较可行,也确实解决了开发中的这一类问题,非原创,写在此是为以后自己能方便的找到,也希望对其他的朋友有帮助。
    2009-10-10
  • ASP.NET将文件写到另一服务器(图文教程)及注意事项

    ASP.NET将文件写到另一服务器(图文教程)及注意事项

    有时我们需要将来自于客户端的文件上传到WEB服务器端,并在服务端将文件存储到第三方文件服务器中存储,既然有需求,那就有实现了,感兴趣的你可以了解此文,或许对你学习asp.net 起到很好的作用哦
    2013-01-01
  • 通过RadioButton对DataList控件进行单选实例说明

    通过RadioButton对DataList控件进行单选实例说明

    本例实现通过RadioButton对DataList控件进行单选,aspx拉一个DataList控件,把RadioButton置于DataList的ItemTemplate模版内;在.aspx.cs内为DataList控件绑定数据,很实用的功能,感兴趣的朋友可以了解下啊
    2013-01-01
  • ASP.NET MVC缓存过滤器用法

    ASP.NET MVC缓存过滤器用法

    本文详细讲解了ASP.NET MVC缓存过滤器的用法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Opencv2.4.13与Visual Studio2013环境搭建配置教程

    Opencv2.4.13与Visual Studio2013环境搭建配置教程

    这篇文章主要为大家详细介绍了Opencv2.4.13 与Visual Studio2013环境搭建配置教程的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 解决Visual Studio 2012 Update 4 RC启动调试失败的方案

    解决Visual Studio 2012 Update 4 RC启动调试失败的方案

    这篇文章主要为大家详细介绍了Visual Studio 2012 Update 4 RC启动调试失败的解决方案,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • asp.net Checbox在GridView中的应用实例分析

    asp.net Checbox在GridView中的应用实例分析

    这篇文章主要介绍了asp.net Checbox在GridView中的应用,结合实例形式分析了GridView中添加与使用Checbox的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • Visual Studio 2017安装使用教程

    Visual Studio 2017安装使用教程

    这篇文章主要为大家详细介绍了Visual Studio 2017安装使用教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • asp.net 初始化文本框的小例子

    asp.net 初始化文本框的小例子

    这篇文章介绍了asp.net 初始化文本框的小例子,有需要的朋友可以参考一下,希望对你有所帮助
    2013-07-07
  • ASP.NET MVC 4 中的JSON数据交互的方法

    ASP.NET MVC 4 中的JSON数据交互的方法

    本篇文章主要介绍了ASP.NET MVC 4 中的JSON数据交互的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-04-04

最新评论