概述
1、创建实体模型
public class Users
{
public string UserID { get; set; }
public string UserName { get; set; }
public string Password { set; get; }
public string Name { get; set; }
public string UserType { set; get; }
public DateTime Time { set; get; }
public string Address { get; set; }
}
实体模型对应数据表中字段;
2、创建访问数据的类
public class DBHelper
{
private static string Connstr = "data source=.;initial catalog=OBS;user id=sa;pwd=111111";
public T QueryDamin<T>(T userName) where T :Models.Users //申明泛型方法,传入userName值。条件约束为实体模型中的user
{
Type type = typeof(T);//获得泛型T的类型
T t = (T)Activator.CreateInstance(type);//实例化泛型T
string columns = string.Join(",", type.GetProperties().Select(p => string.Format("[{0}]", p.Name)));//以,号分割实力t,lanmb表达式一一对应,生成select语句
string sql=string.Format("Select {0} FROM {1} WHERE UserName='{2}';",columns,type.Name, userName.UserName);//合并字符串
using (SqlConnection conn = new SqlConnection(Connstr))
{
SqlCommand command = new SqlCommand(sql, conn);
conn.Open();
SqlDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection);
if (reader.Read())
{
foreach (var prop in type.GetProperties())//循环实例化的T模型
{
string proptyname = prop.Name;//proptyname等于模型中发字段
prop.SetValue(t, reader[prop.Name]);//给模型T一对一赋值
Console.WriteLine("{0}:{1}",prop.Name,prop.GetValue(t));,//prop.GetValue(t)获得实例的值
}
return t;//返回T
}
}
return default(T);//无值返回默认值
}
三、调用
class Program
{
static void Main(string[] args)
{
DBHelper db = new DBHelper();
Users user = new Users() { UserName = "test6" };
db.QueryDamin(user);
Console.ReadKey();
}
}
利用反射实现了通用访问数据库类的泛型方法;
最后
以上就是清新蜗牛为你收集整理的c#进阶之路-MVC&EF原理(笔记4)的全部内容,希望文章能够帮你解决c#进阶之路-MVC&EF原理(笔记4)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复