DMSLinq表示式框架實現 總

2022-02-23 09:26:54 字數 1602 閱讀 9471

1.寫這個框架要感謝一下之前的公司,逼我深入學習linq的一些東西.前前後修改過兩三次,該框架不和iqueryable查詢相似,但不是基於iqueryable來寫的,所以非常方便擴充套件,最終實現多表查詢和支援部分linq from語法(懶載入技術,不支援into語法).

如:

var q1 = from x in dms.create(false, false

)

where x.sysroleid > 0 && x.rolename.like("s"

)

select

x;

var q2 = from x in dms.create(false, false

) join y

in dms.create()

on x.sysroleid equals y.sysroleid

select

new;

2.支援子查詢的語法(必須在子查詢中對錶名進行as)

var query = dms.create().where(q => q.sysrolepowerid > 0 && q.remark.like("

qq")).select(q => new

);

3.資料返回預設為datatable型別,一般可以tolist《任意型別》(),根據型別的屬性字段進行值,不像iqueryable裡面的tolist不能傳型別,需進行select進行賦值.大大減少**量

4.支援資料過濾介面,可在框架外進行實現idmslinqqueryfilter介面進行配置過濾表的縱向資料許可權,橫向資料許可權可用columnsclip進行拼接的方式進行調整.

<

configuration

>

<

configsections

>

<

section

name

="dmslinqqueryprovider"

type

="kingnet.dmsframe.dmslinq.dmslinqqueryprovider,kingnet.dmsframe.dmslinq"

/>

configsections

>

<

dmslinqqueryprovider

>

<

add

key="query1"

value

="kingnet.dmsframe.business.queryfilterbll,kingnet.dmsframe.business"

/>

dmslinqqueryprovider

>

configuration

>

5.支援字段拼接查詢或做為條件

var query2 = dms.create<

userinfo

>().select(q => q.columns((q.title + q.username).as("username")));

DMSLinq表示式框架實現 六

這段時間一直在優化dmslinq,也看到了有些方法存在不合理處.還把框架內的公用類進行了分解,以後可以開源用.優化了一些方法,使其更能支援每個人的習慣寫法 1.改進join前不能加where條件的bug 2.改進查詢列時as方法用new匿名例項時出現兩個as列名的現象 3.增加whereclip等動...

CronExpression表示式語法總結

乙個cron表示式由6或7個時間元素組成。它們之間用空格分隔,依次為 秒 分 小時 日 月 星期 年 序號說明 是否必填 允許填寫的值 允許的符號1秒 是0 59 2分 是0 59 3小時 是0 23 4日 是1 31 l w5月 是1 12 or jan dec 6星期 是1 7 or sun s...

CronExpression表示式語法總結

乙個cron表示式由6或7個時間元素組成。它們之間用空格分隔,依次為 秒 分 小時 日 月 星期 年 序號說明 是否必填 允許填寫的值 允許的符號1秒 是0 59 2分 是0 59 3小時 是0 23 4日 是1 31 l w5月 是1 12 or jan dec 6星期 是1 7 or sun s...