LinQ Query Builder в файл .cs в C # - PullRequest
1 голос
/ 16 ноября 2010

Как вы знаете, мы используем технологию LinQ для классов SQL для отправки и получения результатов в SQL. Если у меня есть таблица с именем User in SQL, я пишу запросы на 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+, мне нужно написать те же коды. Это займет слишком много времени, чтобы написать. Существует ли какой-либо инструмент (бывший генератор) для получения имен таблиц из заданного 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");
        }

Ответы [ 2 ]

1 голос
/ 16 ноября 2010
1 голос
/ 16 ноября 2010

Посмотрите на Комплект преобразования текстовых шаблонов для Visual Studio - T4.

...