Asp.net core利用dynamic簡化數(shù)據(jù)庫訪問
更新時間:2022年07月01日 10:06:13 作者:天方
這篇文章介紹了Asp.net core利用dynamic簡化數(shù)據(jù)庫訪問的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
今天寫了一個數(shù)據(jù)庫的幫助類,代碼如下。
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 { //自己實現(xiàn)一個,不用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"]), }; }
轉(zhuǎn)換為如下形式
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; }
到此這篇關(guān)于Asp.net core利用dynamic簡化數(shù)據(jù)庫訪問的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- ASP.NET?Core使用EF為關(guān)系數(shù)據(jù)庫建模
- ASP.NET?Core基于現(xiàn)有數(shù)據(jù)庫創(chuàng)建EF模型
- .NET?Core配置連接字符串和獲取數(shù)據(jù)庫上下文實例
- .NET Core使用EF生成數(shù)據(jù)庫出錯的解決方法
- ASP.NET?Core使用EF?SQLite對數(shù)據(jù)庫增刪改查
- .Net Core 使用NLog記錄日志到文件和數(shù)據(jù)庫的操作方法
- EFCore 通過實體Model生成創(chuàng)建SQL Server數(shù)據(jù)庫表腳本
- .net core下配置訪問數(shù)據(jù)庫操作
相關(guān)文章
CheckBox控件默認選中,提交時永遠獲得選中狀態(tài)的實現(xiàn)代碼
下面小編就為大家?guī)硪黄狢heckBox控件默認選中,提交時永遠獲得選中狀態(tài)的實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-05-05一個伴隨ASP.NET從1.0到4.0的OutputCache Bug介紹
一個伴隨ASP.NET從1.0到4.0的OutputCache Bug介紹,學習.net的朋友可以參考下。2011-11-11Asp.net基于ajax和jquery-ui實現(xiàn)進度條
這篇文章主要介紹了Asp.net基于ajax和jquery-ui實現(xiàn)進度條,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-12-12ASP.NET 連接ACCESS數(shù)據(jù)庫的簡單方法
一段非常簡單的連接ACCESS數(shù)據(jù)庫的實例代碼,有需要的朋友可以參考一下2013-07-07