現在很多軟件都直接使用ORM框架來進行數據庫操作,也就此出現代碼優先。
ORM框架一個麻煩是效率和復雜查詢語句,在有些情況下並不好,而且難以控制生成的SQL.
另外一種則是直接寫SQL語句,對於c#來說就是ado.net.
還有類似spring.net的框架,但是遺憾的是配置SQL的庫還是有一定封閉性,基本和ORM綁定,或者需要自己操作數據庫,沒有將生成的SQL語句提供出來,我還沒有找到類似的。因此,輪子來了。
采用XML配置SQL語句,一個語句就是一個Statement節點,攜帶ID屬性,ID標記需要使用的SQL方法,程序將自動反射調用的類名稱,方法名稱,分別作為xml文件名稱和節點名稱。然后解析xml;
xml內部節點被映射成程序方法,主要有Isnotempty映射實體屬性為空判斷,Dynamic映射我們一般的條件判斷,引用了動態linq,
方法的參數映射成SQL的參數。
定義的主要節點:where ,set,choose,when,othersize,witch,case,default,page判斷連接
條件節點:IsNotEmpty,Dynamic
類似你會看見:
<Statement Id="Test" >
select * from test where id=@id
</Statement>
或者擴展
<Statement Id="Test" >
select * from test
<where IsNotEmpty="name">
name=@name
</where>
</Statement>
初步項目:https://github.com/jinyuttt/SmartXmlSql.git