C# ORM 反射与泛型的交叉应用
来源:互联网 发布:批量处理图片大小软件 编辑:程序博客网 时间:2024/06/05 04:14
废话 不说直入正题
步骤
- 获取泛型类型
- 获取泛型属性
- 由泛型属性匹配数据库字段
- 获取匹配成功的字段名称
- 获取匹配成功的属性值
- 建立 SQL 语句执行
代码
这里没有使用 SqlParameters ,考虑到参数类型是可变的,于是就使用了 StringBuilder 来创建字符串并完成拼接
private const string INSERT = "INSERT INTO dbo.Alvin";public static int Create<TEntity>(TEntity entity) { using (var conn = SqlHelper.Instance.GetConnection()) { Type type = typeof(TEntity); PropertyInfo[] infos = type.GetProperties(); StringBuilder sbP = new StringBuilder(); sbP.Append("("); StringBuilder sbV = new StringBuilder(); sbV.Append(" VALUES("); foreach (var info in infos) { object[] objs = info.GetCustomAttributes(typeof(FieldAttribute), false); if (objs != null) { //获取字段名称 string s = ((FieldAttribute)objs[0]).Fields; sbP.Append(s+","); //Console.WriteLine("字段名称:{0}", ((FieldAttribute)objs[0]).Fields); //通过type 获取对应的字段,然后通过 getvalue 获取到值 // Console.WriteLine("字段值:{0}", type.GetProperty(s).GetValue(entity, null)); //注意这里必须要加上 '' 否则存入的时候会在datatime的转换上出现问题导致崩溃 sbV.Append("'"+type.GetProperty(s).GetValue(entity, null) + "',"); } } //获取完所有值,去掉尾部 , 并添加上真正的尾部 sbP.Append(")"); sbP.Replace(",)", ")"); sbV.Append(")"); sbV.Replace(",)", ") SELECT SCOPE_IDENTITY()"); string sql = INSERT + sbP.ToString() + sbV.ToString(); //Console.WriteLine("SQL 语句:{0}", sql); //插入 int insertedId = SqlHelper.Instance.ExecuteScalar<int>(conn, sql, new List<SqlParameter>() { }); return insertedId; } }
效果
阅读全文
0 0
- C# ORM中反射与泛型的交叉应用
- C# ORM 反射与泛型的交叉应用
- C# ORM 泛型与反射的交叉应用
- C#基础系列:实现自己的ORM(反射以及Attribute在ORM中的应用)
- c# 反射在ORM中的应用
- 【Go】Beego Orm中反射的应用
- C# 反射的应用
- 实施 ORM 的两项要旨:泛型和反射
- c#泛型和反射的设计应用(一)
- c#泛型和反射的设计应用(一)
- C# 泛型与反射
- 实现自己的ORM(反射以及Attribute在ORM中的应用)
- C#反射(Reflection)的应用
- C#反射机制概述与应用
- 透彻分析反射与反射的应用
- C#根据反射实现ORM映射
- c# .net orm 框架 dapper.net 的应用
- c# .net orm 框架 dapper.net 的应用
- Linux下安装软件的一般步骤
- NKOJ1937-太空飞行计划
- hdu 2110 Crisis of HDU
- 字符设备驱动模型
- 【Unity】 Transform.TransformDirection作用
- C# ORM 反射与泛型的交叉应用
- 一个故事让你彻底搞懂Https
- sfzh18转15
- 344. Reverse String
- Road HDU
- C ++ Primer Plus 第六版 第九章编程练习答案
- hdu 2152 Fruit
- 40-数组中出现一次的数字
- 配置pom的jdk注意事项