您现在的位置是:网站首页> 编程资料编程资料
Asp.net core利用dynamic简化数据库访问_实用技巧_
2023-05-24
556人已围观
简介 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 _values = new Dictionary(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() { return (T)Convert.ChangeType(DbData, typeof(T)); } public static implicit operator string(DbField data) => data.Value(); public static implicit operator int(DbField data) => data.Value(); public static implicit operator DateTime(DbField data) => data.Value(); public static implicit operator double(DbField data) => data.Value(); public static implicit operator bool(DbField data) => data.Value(); } } 简单的来讲,可以把如下代码
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简化数据库访问的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。
您可能感兴趣的文章:
相关内容
- Asp.net core实现PushStream视频流推送_实用技巧_
- 在Asp.net core中实现websocket通信_实用技巧_
- 使用.NET Core创建exe应用程序_实用技巧_
- .Net弹性和瞬态故障处理库Polly实现执行策略_实用技巧_
- .Net弹性和瞬态故障处理库Polly实现弹性策略_实用技巧_
- .Net弹性和瞬态故障处理库Polly介绍_实用技巧_
- .NET6接入Skywalking链路追踪详细过程_实用技巧_
- 使用CefSharp在.Net程序中嵌入Chrome浏览器_实用技巧_
- .Net中的弱引用字典WeakDictionary和ConditionalWeakTable介绍_实用技巧_
- 详解.NET中负载均衡的使用_实用技巧_
