日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

PDF.NET数据开发框架操作MySQL实体类操作实例

發(fā)布時間:2025/7/25 数据库 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PDF.NET数据开发框架操作MySQL实体类操作实例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在我們最近的項目中,SQL-MAP使用較多,但是實體類用的很少,實際上,“PDF.NET數(shù)據(jù)開發(fā)框架”的實體類相當(dāng)強(qiáng)大,下面的測試程序是在MySQL中操作的實例。

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

<?xml version="1.0" encoding="utf-8" ?> <configuration><connectionStrings><add name ="default" connectionString ="server=192.168.XX.XX;User Id=root;password=XXXX;database=test" providerName="PWMIS.DataProvider.Data.MySQL,PWMIS.MySqlClient"/></connectionStrings> </configuration>

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

/** PDF.NET 數(shù)據(jù)開發(fā)框架* http://www.pwmis.com/sqlmap*/ using System; using System.Collections.Generic; using System.Linq; using System.Text; using PWMIS.DataMap.Entity;namespace TestMySqlEntity {class User:EntityBase {public User(){TableName = "tb_user";PrimaryKeys.Add("ID");//主鍵IdentityName = "ID";//標(biāo)識,自增PropertyNames = new string[] {"ID","Name","Age" };PropertyValues = new object[PropertyNames.Length];}public int ID{get { return getProperty<int>("ID"); }set { setProperty("ID", value); }}public int Age{get { return getProperty<int>("Age"); }set { setProperty("Age", value); }}public string Name{get { return getProperty<string>("Name"); }set { setProperty("Name", value,50); }}} }

3,根據(jù)這個實體類,我們?nèi)ySQL定義一個用戶表:tb_user,具體過程省略。

(此目的也是為了先有實體再有數(shù)據(jù)表,以便大家領(lǐng)略O(shè)RM的正真含義)

?

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

using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?PWMIS.DataMap.Entity;

namespace?TestMySqlEntity
{
????
class?Program
????{
????????
static?void?Main(string[]?args)
????????{
????????????User?u?
=?new?User();

????????????
//*************構(gòu)建?OQL?查詢表達(dá)式?*******?begin?************
????????????
//查詢實體集合
????????????
//使用?OQLCompare?對象作為條件
????????????
//OQL?q?=?OQL.From(u).Select().Where(new?OQLCompare(u).Comparer(u.Age,?OQLCompare.CompareType.NoSmaller,?15)).END?;

????????????OQL?q?
=?new?OQL(u);
????????????
//使用OQL2?作為條件對象
????????????q.Select().Where(q.Condition.AND(u.Age,?">=",?15)).OrderBy?(u.Age?,"asc");
????????????
//使用?QueryParameter?數(shù)組作為條件,適合于多個并列的And條件
????????????
//q.Select().Where(new?QueryParameter[]?{?new?QueryParameter("Age",?PWMIS.Common.enumCompare.NoSmaller,?15)?}).OrderBy(u.Age,?"asc");?
????????????Console.WriteLine("OQL?to?SQL:\r\n"+q.ToString?());

????????????
????????????
//*************構(gòu)建?OQL?查詢表達(dá)式?*******?end?************

????????????
//查詢實體列表
????????????var?result?=?EntityQuery<User>.QueryList(q);
????????????Console.WriteLine(
"查詢實體集合成功,數(shù)量:"+result?.Count?);

????????????Console.WriteLine(
"\r\nExecuted?SQL?Text:\r\n{0}\r\n",?PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);

????????????
//查詢單個實體
????????????u.Name?=?"zhang?san";
????????????q.Select().Where(u.Name);
????????????Console.WriteLine(
"OQL?to?SQL:\r\n"?+?q.ToString());
????????????User?u1?
=?EntityQuery<User>.QueryObject(q);
????????????
if?(u1?!=?null)
????????????????Console.WriteLine(
"查詢單個實體成功!");

????????????Console.WriteLine(
"\r\nExecuted?SQL?Text:\r\n{0}\r\n",?PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);


????????????
//直接使用EntityQuery<T>.Instance?屬性的插入、修改、刪除方法
????????????u.Name?=?"li?si3";
????????????u.Age?
=?15;
????????????
if?(EntityQuery<User>.Instance.Insert(u)?>?0)
????????????????Console.WriteLine(
"插入實體成功!");?//將自動為ID屬性賦值

????????????Console.WriteLine(
"\r\nExecuted?SQL?Text:\r\n{0}\r\n",?PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);

????????????u.Age?
=?25;
????????????
if?(EntityQuery<User>.Instance.Update?(u)?>?0)
????????????????Console.WriteLine(
"修改實體成功!");

????????????Console.WriteLine(
"\r\nExecuted?SQL?Text:\r\n{0}\r\n",?PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);

????????????User?u2?
=?new?User();
????????????u2.Name?
=?"wang?wu";
????????????u2.Age?
=?20;

????????????
//使用EntityQuery<T>?的實例對象方法更新實體
????????????
//只會更新賦值過的屬性值
????????????EntityQuery<User>?eq?=?new?EntityQuery<User>(u2);
????????????
if?(eq.SaveAllChanges()?>?0)
????????????????Console.WriteLine(
"更新實體成功!");

????????????Console.WriteLine(
"\r\nExecuted?SQL?Text:\r\n{0}\r\n",?PWMIS.DataProvider.Data.CommandLog.Instance.CommandText);

????????????Console.Read();
????????}
????}
}
?

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

OQL to SQL:
SELECT [ID],[Name],[Age]
?FROM [tb_user]
?? Where? [Age] >= @Age0
??????? Order by [Age] asc
查詢實體集合成功,數(shù)量:23

Executed SQL Text:
SELECT `ID`,`Name`,`Age`
?FROM `tb_user`
?? Where? `Age` >= @Age0
??????? Order by `Age` asc

OQL to SQL:
SELECT [ID],[Name],[Age]
?FROM [tb_user]
?? Where Name=@Name

查詢單個實體成功!

Executed SQL Text:
SELECT `ID`,`Name`,`Age`
?FROM `tb_user`
?? Where Name=@Name


插入實體成功!

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

修改實體成功!

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

更新實體成功!

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

?

6,結(jié)果說明

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

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

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

實體類查詢OQL表達(dá)式可以有多種Where條件構(gòu)造方式,具體請看上面的代碼。

?

轉(zhuǎn)載于:https://www.cnblogs.com/bluedoctor/archive/2011/04/13/2015195.html

總結(jié)

以上是生活随笔為你收集整理的PDF.NET数据开发框架操作MySQL实体类操作实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。