代码之家  ›  专栏  ›  技术社区  ›  Serkan Hekimoglu

LinQ查询生成器到C中的.cs文件#

  •  1
  • Serkan Hekimoglu  · 技术社区  · 14 年前

    如您所知,我们使用LinQ技术对SQL类进行发送,并将结果发送到SQL。如果我在SQL中有一个名为User的表,我会用类似C的语言编写查询

    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服务(Create Update Delete)。

    我的问题是,如果我有一个表需要的CRUD超过40+,我需要编写相同的代码。写东西要花太多时间。是否有工具(ex Generator)可以从给定的SQL Con获取表名,并将基方法(CRUD)写入.cs文件?如果不是,我会用C#写一个工具,但首先我想知道。在谷歌上搜索了一下,但找不到足够的信息。

    编辑:在等待答案时,我开始键入一个工具。它会是这样的,但是如果一个工具已经用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");
            }
    
    2 回复  |  直到 14 年前
        2
  •  1
  •   dexter    14 年前

    看看Visual Studio-T4的文本模板转换工具包。