自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

PDF.NET數(shù)據(jù)開發(fā)框架實體類操作實例之在MySQL中操作

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

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

名詞解釋:

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

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

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

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

  1. /*  
  2.  * PDF.NET 數(shù)據(jù)開發(fā)框架  
  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.  
  11. namespace TestMySqlEntity  
  12. {  
  13.     class User:EntityBase   
  14.     {  
  15.         public User()  
  16.         {  
  17.             TableName = "tb_user";  
  18.             PrimaryKeys.Add("ID");//主鍵  
  19.             IdentityName = "ID";//標識,自增  
  20.             PropertyNames = new string[] {"ID","Name","Age" };  
  21.             PropertyValues = new object[PropertyNames.Length];  
  22.  
  23.         }  
  24.  
  25.         public int ID  
  26.         {  
  27.             get { return getProperty<int>("ID"); }  
  28.             set { setProperty("ID", value); }  
  29.         }  
  30.  
  31.         public int Age  
  32.         {  
  33.             get { return getProperty<int>("Age"); }  
  34.             set { setProperty("Age", value); }  
  35.         }  
  36.  
  37.         public string Name  
  38.         {  
  39.             get { return getProperty<string>("Name"); }  
  40.             set { setProperty("Name", value,50); }  
  41.         }  
  42.     }  

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

5,編譯運行,得到下面的結(jié)果:

  1. OQL to SQL:  
  2. SELECT [ID],[Name],[Age]  
  3.  FROM [tb_user]  
  4.    Where  [Age] >= @Age0  
  5.         Order by [Age] asc  
  6. 查詢實體集合成功,數(shù)量: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,結(jié)果說明

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

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

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

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

原文鏈接:http://ft.codeplex.com/discussions/253694

【編輯推薦】

  1. 用C++連接MySQL等數(shù)據(jù)庫一
  2. 用C++連接MySQL等數(shù)據(jù)庫二
  3. 這些SQLite與SQL差異問題,你遇到過嗎
  4. 如何將AS3連接到MySQL數(shù)據(jù)庫上
  5. 如何解決IBatis.net與MySQL連接問題

 

責任編輯:艾婧 來源: codeplex
相關(guān)推薦

2011-04-26 15:26:38

PostgreSQL

2009-11-12 15:47:14

ADO.NET更新數(shù)據(jù)

2011-05-31 10:38:14

PostgreSQL

2011-06-01 15:45:28

實體類序列化

2009-09-10 10:09:46

LINQ to SQL

2009-12-28 16:57:40

ADO .NET 類

2011-07-05 18:04:45

QT Mysql

2009-08-21 17:41:07

.NET平臺構(gòu)成

2011-08-08 15:56:18

iPhone 震動 NSUserDefa

2009-08-20 11:07:07

C#共享內(nèi)存

2010-01-05 15:43:13

.NET Framew

2010-04-19 08:51:30

2011-07-07 16:42:38

iPhone Sqlite3 數(shù)據(jù)庫

2011-08-03 16:22:05

Objective-C CodeBlocks

2009-07-30 13:28:55

ASP.NET中的ja

2024-05-16 08:28:20

類型處理器D3BootJSON

2009-09-02 19:12:25

重新分發(fā).NET框架

2009-12-29 10:26:43

ADO.NET實體框架

2010-05-19 16:31:38

MySQL數(shù)據(jù)庫

2020-10-21 08:05:45

Scrapy
點贊
收藏

51CTO技術(shù)棧公眾號