SQL 実行クラス
CURD 操作クラス
その他の醤油クラス
CURD 操作クラスは、ユーザーが指定した条件を SQL ステートメントに変換し、それを実行のために IHelper に提供し、Model コレクションを返します。
CURD クラス パブリック メソッドを抽象化するにはインターフェイスが必要です。変更と拡張が簡単で、汎用インターフェイスを提供します。簡単のため、当面は JOIN の実装は提供していません。代わりにデータベースビューを使用できますpublic interface IDbOper<T> : IDisposable where T : new() { object Insert(T m);//新增MODEL,返回ID,简单起见只做了INT自增 int Update(string str);//批量更新 int Update(T m);//Model更新 int Delete();//删除 ///拼接字符版,需要自己防止注入,特别是Orderby容易被忽视 IDbOper<T> Select(string sl);//选择字段 IDbOper<T> Where(string sl); IDbOper<T> Orderby(string orby); ///Expression版重载,转化为参数方式执行,以参数方式拼接无注入风险 IDbOper<T> Select(Expression<Func<T, object>> sl); IDbOper<T> Where(Expression<Func<T, bool>> sl); ///Dictionary版重载,需要牛顿JSON帮忙转化,以参数方式拼接无注入风险,此方式用于“等于”等查询方式,不提供大于小于查询 IDbOper<T> Orderby(Dictionary<string, string> dic); IDbOper<T> Where(Dictionary<string, object> dic); /// IDbOper<T> Index(int i); IDbOper<T> Size(int i); T First();//获取第一个model void BegTran(); void RollBack(); void Commit(); M ToObj<M>(Func<IDataReader, M> func,string sql); List<T> ToList(); //转化为其他类型,若开启了事务的话需要此转化 IDbOper<M> ToOper<M>() where M : new(); int Count(); //直接执行SQL语句 int DoCommand(string sql, bool issp); }
public class User { [Key] public int ID{get;set;} public string UserName{get;set;} public string Password{get;set;} } public class NewUser { [Key] public int ID{get;set;} public string UserName{get;set;} public string Password{get;set;} } var db=new DbOper<User>(new DbInfo(){DbType="…",DbConntion="…"});
User a=db.Select(u=>new{u.ID}).Where(u=>u.ID==54).First();
User a=db.Select("*").Where("ID=54").First();
User a=db.Select("*").Where(new Dictionary<string, object>(){Key="ID",Value=54}).First();
List<User> lt=db.Select("*").Where("ID>0").Orderby("ID Desc").Index(2).Size(20).ToList();
db.BegTran(); try{ int b=db.Where("ID=54").Delete();//user表删除ID=54 int c=db.ToOper<NewUser>().Insert(new NewUser(){UserName="…",Password="…"});//newuser表新增一条记录 db.Commit(); } catch{db.RollBack();}