ホームページ  >  記事  >  データベース  >  単純な ORM 生成 (CURD 操作クラス)

単純な ORM 生成 (CURD 操作クラス)

黄舟
黄舟オリジナル
2016-12-28 13:56:481193ブラウズ

SQL 実行クラス

CURD 操作クラス

その他の醤油クラス


CURD 操作クラスは、ユーザーが指定した条件を SQL ステートメントに変換し、それを実行のために IHelper に提供し、Model コレクションを返します。

単純な ORM 生成 (CURD 操作クラス)

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);
    }

私は JQ の操作方法を好むため、この実行メソッドをバックグラウンドで操作したいと思います。早速、2つのモデルとインスタンスを定義します

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();

Insert、Update、Delete、Count を呼び出す場合のみ、ToList メソッドはテキストの結合を開始し、呼び出しが完了した後、IHelper を呼び出して SQL ステートメントを実行します。Clear() が自動的に呼び出され、保存された場所、選択内容がクリーンアップされます。およびその他の情報。

以下は私が提供した操作クラスの実装です。独自の操作クラスを実装することもできます。

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();}

上記は簡単な ORM 作成 (CURD 操作クラス) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) をご覧ください。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。