博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DMSLinq表达式框架实现(一)
阅读量:5280 次
发布时间:2019-06-14

本文共 2645 字,大约阅读时间需要 8 分钟。

好久没有写东西了,不是自己不想写,是自己好像对语文描述能力确实有点差劲.进园子那么久也没有写过完全是自己的东西.都快用

COPY,PARSTER用到极致了.

也罢,就把最近用的东西写写吧.
最近研究了一下LINQ表达式的一些编程方式,了解ExpressionVisitor类的主要功能及其实现.从而写了一个自己的LINQ框架,用LINQ的方式编程

进而生成相应的SQL语句来达到访问数据库的目的.其写法类似于IEnumerable<T>的写法.下面是相关例子

 

var person = DMS.Create
().Join(DMS.Create
(), (x, y) => x.PersonID == y.PersonID , (x, y) => new { x.PersonID, x.Remark, x.StudentID, y.Name, y.Age });

调用 person.GetResultSql()

生成的Sql如下:

SELECT [t0].[PersonID],[t0].[Remark],[t0].[StudentID],[t1].[Name],[t1].[Age] FROM [Student] AS [t0] INNER JOIN [Person] AS [t1] ON ([t0].[PersonID] = [t1].[PersonID])

下面是两个相关的类:

1  [TableMapping(Name = "Person", PrimaryKey = "PersonID", DefaultOrderBy = " PersonID Desc")] 2     public class Person : BaseEntity 3     { 4         [ColumnMapping(Name = "PersonID")] 5         public int PersonID { get; set; } 6         [ColumnMapping(Name = "Name")] 7         public string Name { get; set; } 8         [ColumnMapping(Name = "Age")] 9         public int Age { get; set; }10     }11 12 [TableMapping(Name = "Student", PrimaryKey = "StudentID", DefaultOrderBy = " StudentID Desc")]13     public class Student : BaseEntity14     {15         [ColumnMapping(Name = "StudentID")]16         public int StudentID { get; set; }17         [ColumnMapping(Name = "PersonID")]18         public int PersonID { get; set; }19         [ColumnMapping(Name = "Remark")]20         public string Remark { get; set; }21     }

这里建立Mapping主要是为确定列名和表名,当然我们也可以直接使用PropertyInfo.Name来进行替代..

 

List
list = new List
(); var a = DMS.Create
() .Where(q => q.PersonID == 0) .OrderBy(q => q.Columns(q.PersonID)); list.Add(a); var b = DMS.Create
().Select(q => q.Columns(q.Age, q.Name, q.PersonID)); list.Add(b); var c = DMS.Create
(false) .Where(q => q.Name.Like("123")) .Select(); list.Add(c); var d = DMS.Create
() .Join(DMS.Create
() , (x, y) => x.PersonID == y.PersonID , (x, y) => new { x.PersonID, x.Name, x.Age, y.Remark, y.StudentID, PersonID2 = y.PersonID }).OrderBy(q => q.OrderBy(q.PersonID.Desc())).Pager(5, 20); list.Add(d); foreach (DMS item in list) { Console.WriteLine(item.GetResultSql()); } Console.ReadLine();

 

 

这些只是这个DMSLINQ的一些简单功能,DMSLinq还可以生成更复杂的SQL语句.这里就不再叙述了..哈哈..

后续文章将为您慢慢揭开DMSLinq的奥秘.....

 相关项目下载可以联系本人QQ.因花的时间比较多在这块. 

因现在项目大部分还是3.5特此做了一个3.5版本的,调试了一上基本正常

帮助文档:

转载于:https://www.cnblogs.com/kingkoo/archive/2012/05/01/DMSLinq.html

你可能感兴趣的文章
python学习笔记 day44 mysql练习题(三)
查看>>
c# 使用ICSharpCode.SharpZipLib.dll实现文件压缩并返回
查看>>
【Laravel】 常用的artisan命令
查看>>
Qt 中获取本机IP地址
查看>>
基本数据类型(int, bool, str)
查看>>
070102_赌博设计:概率的基本概念,古典概型
查看>>
IT人生的价值和意义 感觉真的有了
查看>>
Linux命令之df
查看>>
BaseActivity--上门啦
查看>>
JS DOM对象
查看>>
python正则表达式
查看>>
OGR – Merging Multiple SHP files
查看>>
滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(10月17日~10月23日)...
查看>>
创业公司该不该被收购?(转)
查看>>
sqlserver 行转列、列转行[转]
查看>>
【IScroll深入学习】解决IScroll疑难杂症
查看>>
lua io
查看>>
day54
查看>>
运行Jar包程序Shell
查看>>
Python Code snippet
查看>>