程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 分享自己做的一個簡單的查詢表達式模擬(ESQL,Linq)(3)

分享自己做的一個簡單的查詢表達式模擬(ESQL,Linq)(3)

編輯:C#入門知識

測試:
1)實體類,這個類沒有采用元數據匹配的方式,而是采用專門的類來存儲Map信息,主要是為了進行表達式書寫
[csharp]
public class TestEntity 
   { 
       private static readonly TableInfo _TableInfo = new TableInfo(){ TableName="EEEE"}; 
       public static TableInfo TableInfo  
       { 
           get 
           { 
               return _TableInfo; 
           } 
       } 
       private static readonly FieldInfo _Id = new FieldInfo() { FieldName = "id" }; 
 
       public static FieldInfo Id 
       { 
           get { return TestEntity._Id; } 
       } 
 
 
       private static readonly FieldInfo _Name = new FieldInfo() { FieldName = "Name" }; 
 
       public static FieldInfo Name 
       { 
           get { return TestEntity._Name; } 
       }  
 
   } 
2)測試類
[csharp]
public class TestExp 
    { 
        public static string Test() 
        { 
            DbExpression theQuery = new DbExpression(); 
            theQuery.Select(AliasExp.T1[TestEntity.Id], AliasExp.T1[TestEntity.Name]) 
                .From(AliasExp.T1[TestEntity.TableInfo]) 
                .Where(AliasExp.T1[TestEntity.Id] > ConstExp<int>.C("Name", 100)); 
            return theQuery.Expression; 
        } 
    } 
www.2cto.com 上面的表達式和參數就直接可以給Command來執行,我只做了select,其實Update,Delete表達式都是可以的。當然,如果繼續重載操作符,可以把常量表達式除掉,可以像一般書寫那種方式來書寫,比如:A>100,A="100".這裡采用了偷懶的方式。當然要完全模擬還是有困難,因此表達式也需要保留直接寫SQL和設置參數的功能。
這種表達式的優點是跟寫SQL類似,但全部針對實體,可以保持一致性,而且還可以借助VS的智能提示和語法檢查功能。缺點是不太純粹,性能上也會有損失。
輸出結果,大家可以自己動手運行來看.
PS:CSDN的這個編輯器有點問題,稍微久點(1分鐘不到)就不能保存了.
PS:希望C#能支持自定義操作符號,這樣就可以模擬出更純粹的表達式.

摘自 hawksoft

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved