一歩一歩AgileEASの使い方を教えてあげますNETベースクラスライブラリによるアプリケーション開発-ベース編-プレゼンテーションORMの一括削除と更新
10475 ワード
シリーズレビュー
前の文章は一歩一歩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つの方法が存在する.
これらのクエリは、コンソールプレゼンテーションプロジェクトで使用します.
ケース出力結果:
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
前の文章は一歩一歩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