95992828九五至尊2

支出框架之,新手连忙入门引导882828九五至尊手机版

一月 30th, 2019  |  882828九五至尊手机版

 

一、框架的原因  迅猛入门

PDF.NET 开发框架之 SOD框架 Ver 5.2.1.0307
正式版发布
,包罗以下一些:

至于框架的越来越多新闻,请看框架官方主页!

本套框架的探究是借鉴Java平台的Hibernate 和 iBatis
而来,兼有ORM和SQL-MAP的特征,同时还参照了后来.NET的LINQ(本框架成型于二零零六年,当时还未听说过LINQ)使用风格,设计了OQL查询表明式。本框架的统筹思想是通用的,完全可以移植到Java
平台,现在只提供了.NET平台的贯彻,暂且将本框架命名为

SOD_Pwmis.Core

–包括下列数据提供程序

  1. SqlServer
  2. SqlServerCe
  3. Access
  4. OleDb
  5. ODBC
  6. Oracle

–包罗框架的为主类库

PDF.NET

从2013.10.1日起,原PDF.NET 将更名为

PDF.NET SOD All

–包含框架的成套类库和数码提供程序,方今有

  1. SQLite
  2. MySQL
  3. PostgreSQL

SOD

PDF.NET SOD AllSource

–包括整个类库源码和演示程序源码,包蕴超市管理种类源码

one SQL-MAP,ORM,Data Control framework

原PDF.NET框架将成为一个全职能的公司花费框架,而
SOD框架将是PDF.NET开发框架下边的 “数据开发框架”

882828九五至尊手机版 1

PDF.NET 开源历史:

  1. 2010.2–PDF.NET3.0 会员公布版
  2. 2010.5–PDF.NET3.5 会员发表版
  3. 2011.3–PDF.NET4.0 会员公布版
  4. 2011.9–PDF.NET Ver 3.0 开源版   
    节前送礼:PDF.NET(PWMIS数据开发框架)V3.0版开源   
    http://www.cnblogs.com/bluedoctor/archive/2011/09/29/2195751.html
  5. 2012.9–PDF.NET Ver 4.5 开源版
    节前送礼:PDF.NET(PWMIS数据开发框架)V4.5版开源
  6. 2014.1–PDF.NET Ver 5.1
    端午前最终一篇,CRUD码农专用福利:PDF.NET之SOD Version 5.1.0
    开源发表(兼更名)
  7. 2015.2–PDF.NET SOD Ver5.1 一年之计在于春,2015开篇:PDF.NET SOD
    Ver 5.1截然开源
     

 

开源探讨:

  • 框架类库开源协议:采纳LGPL协议,该协议允许商业使用,但仅限于包括类库公布,不得将源码作为商业行为销售分发,详情请看该协议的法定表明。
  • 框架协助工具开源协议:选用GPL协议,不可用于生意销售分发和修改,假使你想用来商业用途或者闭源使用,请单独购买许可,详情请看该协议官方表明。
  • 框架相关示例Demo开源协议:拔取MIT协议,可任意修改使用,详情请看该协议官方表达。

注:框架的支撑工具指的是合二为一开发工具,可以一而再各样数据库进行询问,生成实体类,SQL-MAP
DAL和 SqlMap.config 文件。

PDF.NET SOD 文档

–包蕴下列文档:

  1. _NET ORM 的 “SOD蜜”–零基础入门篇 – 深蓝医务人员 –
    乐乎
  2. PDF_NET SOD 开源框架红包派送活动 && 新手急迅入门引导 – 深蓝医务卫生人员 –
    微博
  3. PDF实体类功用测试
  4. PWMIS.Core.chm
  5. 本子表达
  6. 缓解方案表明

————————————-分界线——————————–

SOD  :  one SQL-MAP,ORM,Data Control framework

SOD框架是PDF.NET
开发框架的子集,如下图:

882828九五至尊手机版 2

关于详细内容,请参见框架官网 http://www.pwmis.com/sqlMap/

关于开源的流行新闻,请参见框架开源项目网站 http://pwmis.codeplex.com/

 

二、开源捐助账号

右图为二维码捐款方式

感谢所有PDF.NET 框架的会员朋友热心的捐助,并为框架不断完善和推广作出的杰出贡献!2015新春之际,送红包给大家!

三、火速入门:

3.1,总览

SOD框架分为3大多数:

  1. SQL-MAP
  2. ORM
  3. Data Control

 

3.2,“SqlHelper”基础

那三大一些,都是基于AdoHelper组件,它适合MS
DAAB标准,所以明白SqlHelper的人应该很不难上手,下边举例表明:

AdoHelper helper=new SqlServer();
DataSet ds=helper.ExecuteDataSet( ”Data Source=.;Initial Catalog=LocalDB;Integrated Security=True”,
      CommandType.Text,
      ”SELECT * FROM Table_User”);

 

AdoHelper是一个抽象类,所以它可以实例化成其余数据库访问类,比如继承上面的代码:

helper=new Access(); //Access数据库访问类
DataSet dsAcc=helper.ExecuteDataSet( ”Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Engine Type=6;Data Source=D:\Data\SuperMarket.accdb”,
        CommandType.Text,
        ”SELECT * FROM Table_User”);

在 PWMIS.Core.dll
SOD焦点库中,内置了SqlServer,SqlServerCe,Access,Oracle,OleDb,Odbc
等科普的数据库访问类提供程序。

在先后中老是都指定连接字符串和查询命令类型,好处是“随用随取”,线程安全,随时随处“SqlHelper”,但倒霉之处就是代码冗余,所以可以把数据访问类品种和一而再字符串放到应用程序配置文件中(App.config
/ Web.config ):

<connectionStrings>
    <add name="AccessDb"

  connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Jet OLEDB:Engine Type=6;Data Source= |DataDirectory|SuperMarket.accdb"

  providerName="Access"/>
 </connectionStrings>

在地点的连年配置中, providerName=”Access”   
表示那将是用SOD框架的Access数据库访问提供程序,同样道理,假如 providerName=”SqlServer”  将利用SqlServer提供程序。

万一是SOD 主旨程序之外的数量访问提供程序,必要采纳下边格式的连接配置:

<add name="default" 
  connectionString="server=10.0.0.1;User Id=pdfnet;password=pdfnet2015;CharSet=utf8;DataBase=test;Allow Zero Datetime=True" 
providerName="PWMIS.DataProvider.Data.MySQL,PWMIS.MySqlClient"/>

以此布局表达,连接名为 default 的SOD数据访问驱动程序 所在程序集 是
PWMIS.MySqlClient.dll ,提供程序全名称是 PWMIS.DataProvider.Data.MySQL 。

留神:Web.config
文件中,连接字符串帮助|DataDirectory| 路径格式。

配备了数据库连接音信之后,就足以在先后中像下边这样使用了:

using PWMIS.DataProvider.Adapter;//…
AdoHelper accessDb1=MyDB.Instance;//应用程序配置文件连接配置节的最后一个数据连接配置
AdoHelper accessDb2=MyDB.GetDBHelperByConnectionName(“AccessDb”); //连接字符串名字

AdoHelper mySqlDb=MyDB.GetDBHelperByConnectionName(“default”); //连接字符串名字 
bool flag= accessDb.GetType() == typeof(Access); //flag=true;

bool flag2= mySqlDb.GetType() == typeof(PWMIS.DataProvider.Data.MySQL); //flag2=true;

注意示例中的 MyDB.Instance
对象,这是系统应用的默许数据访问类,它一向读取的是应用程序配置文件连续配置节的尾声一个数额连接配置,那是一个静态单利对象,请勿在作业中动用它,初此之外,在其他地点拔取它都是足以的,但照旧不提议您在二十四线程环境下利用
MyDB.Instance 这一个AdoHelper的单例对象,推荐 accessDb2 的AdoHeper
实例化格局。

3.3,微型ORM

 

除去,AdoHelper 对象依然一个“微型ORM”,请看上面的以身作则:

AdoHelper dbLocal = new SqlServer();
dbLocal.ConnectionString = "Data Source=.;Initial Catalog=LocalDB;Integrated Security=True";
var dataList = dbLocal.GetList(reader =>
{
    return new
   {
       UID=reader.GetInt32(0),
       Name=reader.GetString(1)
   };
}, "SELECT UID,Name FROM Table_User WHERE Sex={0} And Height>={1:5.2}",1, 1.60M);

地方将一条SQL语句的结果,直接照射到了一个匿名实体类上,注意还有格式化参数的法力。

如果不想接SQL结果映射到匿名类型上,而是一个社团根SQL结果类型相同的POCO类上,可以这么使用:

//假设UserPoco 对象跟 Table_User 表是映射的相同结构
AdoHelper dbLocal = new SqlServer();
dbLocal.ConnectionString = "Data Source=.;Initial Catalog=LocalDB;Integrated Security=True";
var list=dbLoal.QueryList<UserPoco>("SELECT UID,Name FROM Table_User WHERE Sex={0} And Height>={1:5.2}",1, 1.60M);

该作用可以接近流行的Dapper 数据访问组件,能够使用SOD AdoHelper替代使用。

 

3.4,小结:

上边表达了PDF.NET SOD框架最基础的多少访问组件 AdoHelper
的行使,但那也是众多新手朋友不太了然的地点,特别是 MyDB.Instance
单例对象简单滥用,一定要控制。

SOD框架绝一大半情形下,只需要展开下边的数量连接配置,即可顺遂运行代码了,比起Entity
Framework 的布署来,是或不是粗略很多?

来看此间,我想你应有入门了,上边就让大家大致的浏览下SOD框架的一个大概。


四、SQL-MAP

你是还是不是早就或者看到过旁人做的种类,

  • 多量凑合SQL语句,或者SQL参数化查询后拖沓呈长而又麻烦的代码,甚至SQL满天飞?
  • 维护这么的代码是还是不是格外痛楚?
  • 每一天写那样的CRUD代码是否感觉有点浪费生命?

近来好了,你可以将具备SQL语句集中写到一个布署文件中,集中管理维护你的查询程序,甚至,这一个工作你可以丢给DBA去做!

本功用看似于Java界出名的 iBatis 和移植到.Net的 MyBatis.Net
,不过,SQL-MAP去除了它们沉长的布局,并且应用工具自动生成代码,使得编写DAL
数据访问层不须要写一行代码,请参考下边的篇章:

《PDF.NET 之SQL-MAP
使用图解教程》

更多的始末,你也可以参见SOD框架官方博客的介绍:

(PDF.NET框架实例讲解)将积存进程映射为实体类
深蓝先生 2011-08-18 17:25 阅读:1748 评论:6

行使XSD编写具有智能提示的XML文件(以SQL-MAP脚本为实例)
深蓝先生 2011-05-13 12:17 阅读:1609 评论:7

PDF.NET(PWMIS数据开发框架)之SQL-MAP目的和正规
深蓝先生 2011-05-07 00:05 阅读:937 评论:1

虚幻SQL查询:SQL-MAP技术的应用
深蓝先生 2011-05-06 11:59 阅读:3598 评论:21

行使OQL+SQLMAP解决ORM多表复杂的查询难题
深蓝先生 2011-02-25 19:08 阅读:928 评论:0

PDF.NET数据开发框架
之SQL-MAP使用存储进程

深蓝先生 2010-07-03 23:31 阅读:2386 评论:4

 

五、ORM

SOD框架发明了独到的ORM查询语言OQL,它基本覆盖了SQL92正式的绝大部分成效,使得你在VS
IDE
使用“对象化的SQL”。近年来成功这一个功用的除了Linq之外,没有越多的ORM具有这几个能力,可是相比较EF框架的询问语言Linq,OQL有谈得来的性状,它跟SQL更为接近,对.NET框架的借助至极小,那使得你有可能将OQL移植到Java
,C++ 这样的面向对象的语言。

下边给出一个简练的示范,有关该示例的详尽内容,请参考那篇博客文章《DataSet的灵巧,实体类的福利,DTO的功用:SOD框架的数额容器,打造最符合DDD的ORM框架

SOD的实体类示例:

public class UserEntity:EntityBase, IUser
    {
        public UserEntity()
        {
            TableName = "Users";
            IdentityName = "User ID";
            PrimaryKeys.Add("User ID");
        }

        public int UserID
        {
            get { return getProperty<int>("User ID"); }
            set { setProperty("User ID", value); }
        }

        public string FirstName
        {
            get { return getProperty<string>("First Name"); }
            set { setProperty("First Name", value,20); }
        }

        public string LasttName
        {
            get { return getProperty<string>("Last Name"); }
            set { setProperty("Last Name", value,10); }
        }

        public int Age
        {
            get { return getProperty<int>("Age"); }
            set { setProperty("Age", value); }
        }
    }

这是一个简单易行的用户新闻实体类,它连续了一个接口 IUser  ,在App.config
中布局了数量连接后,就足以像下边那样使用了:

//注册并从容器中创设实体类

EntityBuilder.RegisterType(typeof(IUser), typeof(UserEntity));
UserEntity user = EntityBuilder.CreateEntity<IUser>() as UserEntity;
//实体类作为索引器使用

bool flag = (user["User ID"] == null);//true

//删除测试数据
LocalDbContext context = new LocalDbContext();//自动创建表
OQL deleteQ = OQL.From(user)
    .Delete()
    .Where(cmp=>cmp.Comparer(user.UserID,">",0)) //为了安全,不带Where条件是不会全部删除数据的
    .END;
context.UserQuery.ExecuteOql(deleteQ);
Console.WriteLine("插入3条测试数据");
//插入几条测试数据
context.Add<UserEntity>(new UserEntity() {  FirstName ="zhang", LasttName="san" });
context.Add<IUser>(new UserDto() { FirstName = "li", LasttName = "si", Age = 21 });
context.Add<IUser>(new UserEntity() { FirstName = "wang", LasttName = "wu", Age = 22 });

//查找姓张的一个用户
UserEntity uq = new UserEntity() { FirstName = "zhang" };
OQL q = OQL.From(uq)
   .Select(uq.UserID, uq.FirstName, uq.Age)
   .Where(uq.FirstName)
.END;

//下面的语句等效
//UserEntity user2 = EntityQuery<UserEntity>.QueryObject(q,context.CurrentDataBase);
UserEntity user2 = context.UserQuery.GetObject(q);

在意:该实例需求SOD框架最新版本的支撑,你也得以接纳从前的主意,使用EntityQuery<T>
来操作实体类。

除此以外,SOD的ORM也支撑依照接口之间创建实体类并询问的成效,请看下边的以身作则:

 static void TestGOQL()
 {
     string sqlInfo="";
     //下面使用 ITable_User 或者 Table_User均可
      List<ITable_User> userList =
                OQL.FromObject<ITable_User>()
                //.Select() //选全部自断
                .Select(s => new object[] { s.UID, s.Name, s.Sex }) //仅选取3个字段
                  .Where((cmp, user) => cmp.Property(user.UID) < 100)
                .OrderBy((o,user)=>o.Asc(user.UID))
                .Limit(5, 1) //限制5条记录每页,取第一页
                .Print(out sqlInfo)
              .ToList();

            Console.WriteLine(sqlInfo);
            Console.WriteLine("User List item count:{0}",userList.Count);
        }

关于该意义的事无巨细内容介绍,请看博客小说《一行代码调用完成带字段选拔+条件判断+排序+分页作用的进步ORM框架》。

六、Data Control

框架接济Windows Forms,WebForms
的窗体编程,扩张了一套数据控件,包罗常用的
文本框、复选框、单选框、列表框、日历控件、标签控件等。那些控件全体按照SOD的窗体数据接口,完结这么些接口的控件将高大的简化窗体应用程序的多寡操作,有关内容详细介绍,请看那篇博客小说:

不行使反射,“一行代码”落成Web、WinForm窗体表单数据的填写、收集、清除,和到数据库的CRUD

你也可以在 pwmis.codeplex.com
下载源码,找到下边地址对应的SimpleAccessWinForm

抑或下载那一个 882828九五至尊手机版 3
PDF.Net_V4.6 WinForm
数据表单实例

 

或者看这几个 882828九五至尊手机版 4
WebTestTool

那2个示范应用程序,都以身作则了WinForm下怎么运用Data Control
数据控件简化CRUD窗体编程。

其余,若是你是WebForms
应用程序,开源项目标杂货铺管理种类源码
你可以看看,

要么直接下载这一个(版本较老)882828九五至尊手机版 5
PDF.Net_V4.6_OpenSource
(new)

 

结束语:

SOD不仅仅是一个ORM,它还有SQL-MAP和DataControl,具体可以看框架官网
http://www.pwmis.com/sqlmap ,9年历史作育的结晶,坚固可相信。

非凡感谢你见到此间,相信您初步询问了SOD框架的基本功效,若是你还有此外难点,欢迎您在档次的开源网站
pwmis.codeplex.com 的座谈去发帖,或者去官方博客相关小说回帖也可。

 

最终,祝愿所有.NET 程序员早日解脱日复一日的CRUD功效,感谢咱们对PDF.NET
SOD框架一如既往的帮衬,

二〇一五年中秋节关键,祝贺各位会员和其余应用框架的仇敌喜欢,合家快乐,万事如意!

 

附注:如若大家还未曾买到节日时期的轻轨票,推荐本框架开发作者自主开发的《12306空荡荡订票弹窗公告小工具》,工作抢票2不误,青色无毒安全放心!

 

深蓝医师

2015.2 月春节

相关文章

Your Comments

近期评论

    功能


    网站地图xml地图