Как вы знаете, мы используем технологию 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");
}