2010-11-16 43 views
1

如您所知,我們使用LinQ技術生成SQL類來發送和獲取SQL結果。如果我有一個名爲用戶在SQL表中,我使用C#查詢,如將LinQ查詢生成器轉換爲C#中的.cs文件

List<User> allUsers = (from s in dataContext.Users select s).ToList(); 

// Update Query 

User u = (from s in dataContext.Users where s.Id.Equals(1) select s).First(); 

u.Name = "serkan"; 

dataContext.SubmitChanges(); 

我們稱之爲CRUD服務(創建,更新,刪除)。

我的問題是,如果我有一個表需要CRUD超過40+,我需要編寫相同的代碼。編寫需要太多時間。是否有任何工具(前生成器)從給定的SQL Con獲取表名,並將基礎方法(CRUD)寫入.cs文件?如果沒有,我會用C#編寫一個工具,但首先我想知道。在google上搜索了一下,但找不到足夠的信息。

編輯:在等待答案時,我開始輸入一個工具。這將是這樣的,但我會很高興,如果工具已經用C#:)

private List<string> myClasses = new List<string>(); 
     private const string myDataContextName = "SurfTurkeyDataContext"; 

     private void btnGenerate_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       StringBuilder sb = new StringBuilder(); 

       sb.AppendLine("using System;"); 
       sb.AppendLine("using System.Collections.Generic;"); 
       sb.AppendLine("using System.Linq;"); 
       sb.AppendLine("using System.Text;"); 
       sb.AppendLine(Environment.NewLine); 
       sb.AppendLine("namespace LinqToCsGenerator"); 
       sb.AppendLine("{"); 
       sb.AppendLine(Environment.NewLine); 

       //Class Initilize 
       sb.AppendLine("public class Users"); 
       sb.AppendLine("{"); 

       foreach (string item in myClasses) 
       { 
        sb.AppendLine(Environment.NewLine); 

        // Select All Method 
        sb.AppendLine(String.Format("public List<{0}> GetAll{0}()", item)); 
        sb.AppendLine("{"); 
        sb.AppendLine(Environment.NewLine); 
        sb.AppendLine(String.Format("{0} dc = new {0}();", myDataContextName)); 
        sb.AppendLine(Environment.NewLine); 
        sb.AppendLine(String.Format("List<{0}> all{0} = (from s in dc.{0} select s).ToList();", item)); 
        sb.AppendLine(Environment.NewLine); 
        sb.AppendLine(String.Format("return all{0};", item)); 
        sb.AppendLine(Environment.NewLine); 
        sb.AppendLine("}"); 
        sb.AppendLine(Environment.NewLine); 

        // Insert Method 
        // Delete Method 
        //. 
        //. 
        //. 
        //. 
       } 

       sb.AppendLine("}"); 
       sb.AppendLine("}"); 

       System.IO.File.WriteAllText(@"D:\deneme.cs", sb.ToString()); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      myClasses.Add("Users"); 
      myClasses.Add("Products"); 
     } 
+0

goood,去上,建立一個,讓我知道還有:) – 2010-11-16 19:23:53

+0

@Zein謝赫正如我所說,如果心不是任何工具,我需要寫它,是的,我會讓你知道當我找到一個工具,或寫了一個工具:) – 2010-11-16 19:25:46

回答

1
+0

這是非常接近我在找什麼。檢查更多,將返回給您的反饋。謝謝。 – 2010-11-16 20:09:29

+1

好吧,代碼史密斯的工具是非常好的,它有點複雜,但如果你解決如何使用它,它很容易。感謝您的回答。這個工具可以被接受爲解決方案。 – 2010-11-17 10:52:21

+0

是的,我同意它有點複雜,但一旦你做對了,那就很輕鬆。我很久以前在LINQ還沒有使用的時候使用過這個工具。所以我將它與.netTiers結合使用 – Raymund 2010-11-17 19:04:42

1

看文本模板轉換工具包爲Visual Studio - T4。