比LINQ简单:PDF.NET框架之OQL语言!
LINQ很强大,但它要.NET3.0以上才支持,如果还在用VS2005的朋友就有点感叹了,为啥面向对象的方式写SQL的LINQ不能用?
如果你想了解LINQ的实现原理,不想自己实现一个LINQ试试看?
另外,如果你的客户之装了.NET2.0框架,不想装.NET3.5怎么办?
----------------------
基于这些问题,你有兴趣的可以看看 PDF.NET框架之OQL语言!
OQL:Object Query Language
[实体]对象查询语言
OQL作为PDF.NET框架的一部分,为整个框架基于实体的查询提供了强大的“查询语言表达式”!
下面举例介绍OQL的使用:
--------------------------
PDF.NET之实体查询
1.1.1.1 实体类
实体类都是继承自PDF.NET的Entity基类的类。
例如我们假设数据库中存在一个通过如下建表语句创建的表TB_User
--用户类 表脚本创建 for SQL SERVERCreate Table TB_User( ID int identity(1,1) primary key, Name varchar(50) not null, Birthday datetime);
/* 本类由PWMIS 实体类生成工具(Ver 1.1)自动生成 http://www.pwmis.com/sqlmap 使用前请先在项目工程中引用 PWMIS.Core.dll 2010-2-26 17:45:06 */ using System;using PWMIS.DataMap.Entity; namespace MyNameSpace { [Serializable()] public partial class User : Entity { public User() { TableName = "tb_user"; //IdentityName = "标识字段名"; IdentityName="ID"; //PrimaryKeys.Add("主键字段名"); PrimaryKeys.Add("ID"); AddProperty("ID", default(System.Int32)); AddProperty("Name", default(System.String)); AddProperty("Birthday", default(System.DateTime)); } public System.Int32 ID { get{return (System.Int32)getProperty("ID");} set{setProperty("ID",value );} } public System.String Name { get{return (System.String)getProperty("Name");} set{setProperty("Name",value ,50);} } public System.DateTime Birthday { get{return (System.DateTime)getProperty("Birthday");} set{setProperty("Birthday",value );} } }} Console.WriteLine("rn实体对象持久化测试:"); User zhang_san = new User(); //zhang_san.Uid = 5; EntityQuery<User> query = new EntityQuery<User>(zhang_san,true ); zhang_san.Name = "张三1"; query.Save();// 新增 Console.WriteLine("新增实体对象OK"); zhang_san.Birthday = new DateTime (1977,3,10); query.Save();// 修改 Console.WriteLine("修改实体对象OK");this.txtOQL.Text = ""; User u = new User(); OQL q = new OQL(u); q.Select().Where(q.Condition.IN(u.Uid, new object []{1,3,5})); this.txtOQL.Text += q.ToString()+"rn------------------rn"; q.Select().Where(q.Condition.IN(u.Name, new object[] { "张三","李四"})); this.txtOQL.Text += q.ToString() + "rn------------------rn";
------------------
排序
q.Select().Where(q.Condition.IN(u.Uid, new object []{1,3,5})).OrderBy (u.Name ,"desc");OQL q = new OQL(u); q.TopCount = 10; q.Select().Where(q.Condition.IN(u.Uid, new object []{1,3,5})).OrderBy (u.Name ,"desc"); PFT_FundReviews p = new PFT_FundReviews(); OQL q = new OQL(p); p.BankCode = "20"; p.FundCode = "KF001"; p.CityCode = "0210";//修改语法 q.Update( p.CityCode,p.BankCode ).Where (p.FundCode );//也可以使用下面的格式// .Where(q.Condition .AND (p.FundCode ,"=",p.FundCode )); Console.WriteLine("SQL=" + q.ToString()); // 删除语法 q.Delete().Where(p.FundCode); Console.WriteLine("SQL=" + q.ToString()); Console.Read(); PFT_FundReviews p = new PFT_FundReviews(); OQL q = new OQL(p); //OQL实例定义 p.BankCode = "20"; p.FundCode = "KF001"; p.CityCode = "0210";//调用OQL的统计函数 q.Select().Count(p.FundCode, "CountField1").GroupBy (p.BankCode ).OrderBy (p.BankCode,"desc" ); Console.WriteLine("SQL=" + q.ToString()); Console.Read();
[解决办法]
支持。
[解决办法]
学习下
顺便说一下 linq to sql 已经很方便了,linq to entity 研究中
[解决办法]
.NET 3.5 不是问题
你可以用 3.5 开发,然后发布成 2.0的,,,打包进去Linq用到的几个类库就可以了。
[解决办法]
学习。
[解决办法]
OQL 还是第一次听说 努力学习 呵呵 自己现在在研究LINQ TO SQL
[解决办法]
顶,见识下.
[解决办法]
才十块钱,还不如免费算啦。你以为便宜就能卖出???
[解决办法]
对于只装了.NET 2.0的客户端,如果是Winform程序,直接把3.5和3.0的dll复制到程序目录就运行3.5的app了,如果是asp.net,毕竟是服务器升级下fx到3.5还是没啥问题的
[解决办法]
学习下
顺便说一下 linq to entity 研究中
[解决办法]
linq不复杂,挺好用。
再者,3.5的发布不是问题,我用3.5开发的系统,部署到2.0框架机器上了
[解决办法]
好象以前看到过。。。
不过我觉得重复造轮子是不必要的,除非你的轮子比别人好得多。
[解决办法]
看看先。
[解决办法]
好东西