一歩一歩AgileEASの使い方を教えてあげますNETベースクラスライブラリによるアプリケーション開発-ベース編-プレゼンテーションORMの一括削除と更新


シリーズレビュー
前の文章は一歩一歩AgileEASの使い方を教えてくれました.NETベースクラスライブラリによるアプリケーション開発-ベース編-ORMの基本的な操作を実証し、AgileEASの使用を一歩一歩教えます.NETベースクラスライブラリによるアプリケーション開発-ベース編-プレゼンテーションORMの条件照会2つの記事ORMの基本的な使用を実証し、開発で最も一般的な条件照会業務に引用しました.今日は、前の記事の条件照会に基づくベースプレゼンテーションの条件による一括削除と更新を行います.
問題提起
プレゼンテーションORMの操作ベースでは,単一レコード(エンティティ)ベースの削除(Update)と更新(処理)を実証したが,指量レコードの更新と削除には言及せず,本稿ではORMアプリケーションにおけるソリューションを提案し,その使い方を実証することを目的とした.
解決したら
一括更新と削除データ記録の本質は一括照会条件付きUpdateとDelete文を実行することであり、ORMコンポーネントはこのような機能を完成させなければならない.実現した思想は条件に基づいて一括更新SQL文を生成することであり、一括削除SQL文の新式:delete+データベーステーブル名+where+条件式一括更新SQL文新式:update+データベーステーブル名+set+(カラム名=?[,...])+where+条件式.
このような処理方法が分かった以上,ORMコンポーネントの表現に変換して処理することができ,ORMコンポーネントのITableインタフェースには以下の3つの方法が存在する.
    /// 
    ///             。
    /// 
    /// 
    /// 
    void Delete(Condition condition);
    /// 
    ///                  。
    /// 
    /// 
    /// 
    /// 
    void Update(ColumnCollection colValues,Condition condition);
    /// 
    ///                  。
    /// 
    /// 
    /// 
    /// 
    void Update(IDictionary<string, object> colValues,Condition condition);
          Delete方法使用很简单,带上删除记录的条件对象即可,Update方法的使用则复杂一些,除了设置更新记录的条件,还得设置更新列的内容,提供两种表示形式,ColumnCollection 集合与字典集合,其目的是完成字典名=?(值)的表示形式。

演示简介

          关于条件查询以及条件的构造的知识差不多也就是这些,讲起来也没有什么讲头,重点才于如何组合这些条件实现复杂的业务,在今天的案例中我选择性的演示几个条件的用法,所使用的数据还是商品字典,达到以下的功能:
           1.删除记录ID从100到500的记录并且单位为“1*瓶/瓶”的所有商品。
           2.更新商品编码前2位为“1a”并且单位为“1*袋/袋”的所有商品的商品说明为“垃圾货”,本演示使用update的两种重载。
          实现,在ClassLibDemo.DAL.SQLServer项目的类ProductList增加以下代码:
    public void DeleteProduct(int iStart, int iEnd, string unit)
    {
        Condition condition = this.CreateCondition();
        List<int> values = new List<int>(2);
        values.Add(iStart);
        values.Add(iEnd);
        condition.AddElement("IDN", values, ElementType.BetWeen);
        condition.AddElement("UNIT", unit);
        this.Delete(condition);
    }
    public void UpdateProductDescription(string code, string unit,string desc)
    {
        Condition condition = this.CreateCondition();
        condition.AddElement("CODE", code, ElementType.MatchPrefix);
        condition.AddElement("UNIT", unit);
        Dictionary<string, object> values = new Dictionary<string, object>();
        values.Add("DESCRIPTION", desc);
        this.Update(values,condition);
    }        
    public void UpdateProductDescription2(string code, string unit,string desc)
    {
        Condition condition = this.CreateCondition();
        condition.AddElement("CODE", code, ElementType.MatchPrefix);
        condition.AddElement("UNIT", unit);
        ColumnCollection values = new ColumnCollection(this);
        values.AddColumn("DESCRIPTION",DbType.String,desc);
        this.Update(values,condition);
    }        

これらのクエリは、コンソールプレゼンテーションプロジェクトで使用します. class ConditionUpdate { /// /// ID “* / ” 。 /// public void DemoConditionDelete() { ProductList table = new ProductList(); table.OrmAccessor = OrmContext.OrmAccessor; table.DeleteProduct(100, 500, "1* / "); System.Console.WriteLine(" "); } /// /// 2 “1a” “1* / ” “ ”。 /// public void DemoConditionUpdate() { ProductList table = new ProductList(); table.OrmAccessor = OrmContext.OrmAccessor; table.UpdateProductDescription("1a", "1* / ", " "); System.Console.WriteLine(" "); } /// /// 2 “1a” “1* / ” “ ”。 /// public void DemoConditionUpdate2() { ProductList table = new ProductList(); table.OrmAccessor = OrmContext.OrmAccessor; table.UpdateProductDescription2("1a", "1* / ", " "); System.Console.WriteLine(" "); }
ケース出力結果:
SQLイベント探査:
本例に係るデータテーブル構造については、AgileEASに基づく.NETプラットフォームの基礎クラスライブラリは応用開発を行う-全体の説明とデータ定義の一文、データオブジェクトモデル定義ファイル、ドキュメント、DDLスクリプトについてダウンロードしてください:http://files.cnblogs.com/eastjade/demo.db.doc.sql.rar,本文コードダウンロード:ORM.Demo3.rar. 
リンク
一歩一歩AgileEASの使い方を教えてあげますNETベースクラスライブラリによる応用開発-シリーズディレクトリ
AgileEAS.NETプラットフォーム開発ガイド-シリーズディレクトリ
AgileEAS.NETアプリケーション開発プラットフォーム紹介-記事インデックス
AgileEAS.NETプラットフォーム応用開発チュートリアル-ケーススタディ
AgileEAS.NET公式サイト
敏捷ソフトウェアエンジニアリング実験室
QQ群:116773358