程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> PDF.NET數據開發框架實體類操作實例之在MySQL中操作

PDF.NET數據開發框架實體類操作實例之在MySQL中操作

編輯:MYSQL入門知識
 

在WFT項目中,SQL-MAP使用較多,但是實體類用的很少,實際上,PDF.NET的實體類相當強大,下面的測試程序是在MySQL中操作的實例。

名詞解釋:

PDF.NET 是一套全新的快速數據處理框架 PWMIS Data Develop Framework,簡稱PDF

1,首先在App.config文件中配置數據庫連接字符串:

  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <configuration>
  3. <connectionStrings>
  4. <add name ="default" connectionString ="server=192.168.50.41;
  5. User Id=root;password=hisun;database=test" providerName="PWMIS.DataProvider.Data.MySQL,
  6. PWMIS.MySqlClient"/>
  7. </connectionStrings>
  8. </configuration>

2,然後定義一個“用戶”實體類:

  1. /*
  2. * PDF.NET 數據開發框架
  3. * http://www.pwmis.com/sqlmap
  4. */
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using PWMIS.DataMap.Entity;
  10. namespace TestMySqlEntity
  11. {
  12. class User:EntityBase
  13. {
  14. public User()
  15. {
  16. TableName = "tb_user";
  17. PrimaryKeys.Add("ID");//主鍵
  18. IdentityName = "ID";//標識,自增
  19. PropertyNames = new string[] {"ID","Name","Age" };
  20. PropertyValues = new object[PropertyNames.Length];
  21. }
  22. public int ID
  23. {
  24. get { return getProperty<int>("ID"); }
  25. set { setProperty("ID", value); }
  26. }
  27. public int Age
  28. {
  29. get { return getProperty<int>("Age"); }
  30. set { setProperty("Age", value); }
  31. }
  32. public string Name
  33. {
  34. get { return getProperty<string>("Name"); }
  35. set { setProperty("Name", value,50); }
  36. }
  37. }
  38. }

3,根據這個實體類,我們去MySQL定義一個用戶表:tb_user,具體過程省略。

4,編寫ORM實體類操作的測試代碼:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using PWMIS.DataMap.Entity;
  6. namespace TestMySqlEntity
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. User u = new User();
  13. //*************構建 OQL 查詢表達式 ******* begin ************
  14. //查詢實體集合
  15. //使用 OQLCompare 對象作為條件
  16. //OQL q = OQL.From(u).Select().Where(new OQLCompare(u).
  17. Comparer(u.Age, OQLCompare.CompareType.NoSmaller, 15)).END ;
  18. OQL q = new OQL(u);
  19. //使用OQL2 作為條件對象
  20. q.Select().Where(q.Condition.AND(u.Age, ">=", 15)).OrderBy (u.Age ,"asc");
  21. //使用 QueryParameter 數組作為條件,適合於多個並列的And條件
  22. //q.Select().Where(new QueryParameter[] { new QueryParameter
  23. ("Age", PWMIS.Common.enumCompare.NoSmaller, 15) }).OrderBy(u.Age, "asc");
  24. Console.WriteLine("OQL to SQL:\r\n"+q.ToString ());
  25. //*************構建 OQL 查詢表達式 ******* end ************
  26. //查詢實體列表
  27. var result = EntityQuery<User>.QueryList(q);
  28. Console.WriteLine("查詢實體集合成功,數量:"+result .Count );
  29. Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n",
  30. PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);
  31. //查詢單個實體
  32. u.Name = "zhang san";
  33. q.Select().Where(u.Name);
  34. Console.WriteLine("OQL to SQL:\r\n" + q.ToString());
  35. User u1 = EntityQuery<User>.QueryObject(q);
  36. if (u1 != null)
  37. Console.WriteLine("查詢單個實體成功!");
  38. Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n",
  39. PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);
  40. //直接使用EntityQuery<T>.Instance 屬性的插入、修改、刪除方法
  41. u.Name = "li si3";
  42. u.Age = 15;
  43. if (EntityQuery<User>.Instance.Insert(u) > 0)
  44. Console.WriteLine("插入實體成功!"); //將自動為ID屬性賦值
  45. Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n",
  46. PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);
  47. u.Age = 25;
  48. if (EntityQuery<User>.Instance.Update (u) > 0)
  49. Console.WriteLine("修改實體成功!");
  50. Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n",
  51. PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);
  52. User u2 = new User();
  53. u2.Name = "wang wu";
  54. u2.Age = 20;
  55. //使用EntityQuery<T> 的實例對象方法更新實體
  56. //只會更新賦值過的屬性值
  57. EntityQuery<User> eq = new EntityQuery<User>(u2);
  58. if (eq.SaveAllChanges() > 0)
  59. Console.WriteLine("更新實體成功!");
  60. Console.WriteLine("\r\nExecuted SQL Text:\r\n{0}\r\n",
  61. PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);
  62. Console.Read();
  63. }
  64. }
  65. }

5,編譯運行,得到下面的結果:

  1. OQL to SQL:
  2. SELECT [ID],[Name],[Age]
  3. FROM [tb_user]
  4. Where [Age] >= @Age0
  5. Order by [Age] asc
  6. 查詢實體集合成功,數量:23
  1. Executed SQL Text:
  2. SELECT `ID`,`Name`,`Age`
  3. FROM `tb_user`
  4. Where `Age` >= @Age0
  5. Order by `Age` asc
  1. OQL to SQL:
  2. SELECT [ID],[Name],[Age]
  3. FROM [tb_user]
  4. Where Name=@Name

查詢單個實體成功!

  1. Executed SQL Text:
  2. SELECT `ID`,`Name`,`Age`
  3. FROM `tb_user`
  4. Where Name=@Name

插入實體成功!

  1. Executed SQL Text:
  2. INSERT INTO `tb_user`(`Name`,`Age`) VALUES (@P0,@P1)

修改實體成功!

  1. Executed SQL Text:
  2. UPDATE `tb_user` SET `Age`=@P0 WHERE `ID`=@P1

更新實體成功!

  1. Executed SQL Text:
  2. INSERT INTO `tb_user`(`Name`,`Age`) VALUES (@P0,@P1)

6,結果說明

我們看到整個操作都成功了,特別注意這個:

  1. UPDATE `tb_user` SET `Age`=@P0 WHERE `ID`=@P1

當時我們只給Age屬性重新賦值了,所以生成的更新語句也僅僅更新了該字段。

注意,當前測試程序僅支持PDF.NET框架最新版本 Ver 4.0.11.0415 ,不過框架的ORM功能在之前的版本就已經提供,只是顯示結果稍有不同。

 
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved