日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

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

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

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

<?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,然后定義一個(gè)“用戶”實(shí)體類:

/** 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)識(shí),自增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ù)這個(gè)實(shí)體類,我們?nèi)ySQL定義一個(gè)用戶表:tb_user,具體過(guò)程省略。

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

?

4,編寫ORM實(shí)體類操作的測(cè)試代碼:

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?************
????????????
//查詢實(shí)體集合
????????????
//使用?OQLCompare?對(duì)象作為條件
????????????
//OQL?q?=?OQL.From(u).Select().Where(new?OQLCompare(u).Comparer(u.Age,?OQLCompare.CompareType.NoSmaller,?15)).END?;

????????????OQL?q?
=?new?OQL(u);
????????????
//使用OQL2?作為條件對(duì)象
????????????q.Select().Where(q.Condition.AND(u.Age,?">=",?15)).OrderBy?(u.Age?,"asc");
????????????
//使用?QueryParameter?數(shù)組作為條件,適合于多個(gè)并列的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?************

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

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

????????????
//查詢單個(gè)實(shí)體
????????????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(
"查詢單個(gè)實(shí)體成功!");

????????????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(
"插入實(shí)體成功!");?//將自動(dòng)為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(
"修改實(shí)體成功!");

????????????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>?的實(shí)例對(duì)象方法更新實(shí)體
????????????
//只會(huì)更新賦值過(guò)的屬性值
????????????EntityQuery<User>?eq?=?new?EntityQuery<User>(u2);
????????????
if?(eq.SaveAllChanges()?>?0)
????????????????Console.WriteLine(
"更新實(shí)體成功!");

????????????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í)體集合成功,數(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

查詢單個(gè)實(shí)體成功!

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


插入實(shí)體成功!

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

修改實(shí)體成功!

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

更新實(shí)體成功!

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

?

6,結(jié)果說(shuō)明

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

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

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

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

?

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

總結(jié)

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

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