2010-11-16 5 views
1

Comme vous le savez, nous utilisons la technologie LinQ aux classes SQL pour envoyer et obtenir des résultats SQL. Si j'ai une table appelée utilisateur dans SQL, j'écrire des requêtes en C# commeLinQ Query Builder au fichier .cs en C#

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

ou

// Update Query 

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

u.Name = "serkan"; 

dataContext.SubmitChanges(); 

Nous avons appelé ce service CRUD (Create-Update-Delete).

Ma question est, si j'ai une table requise CRUD plus de 40+, j'ai besoin d'écrire les mêmes codes. Cela prendra trop de temps pour écrire. Existe-t-il un outil (ex Générateur) pour obtenir des noms de tables à partir de SQL Con donné, et écrire des méthodes de base (CRUD) dans un fichier .cs? Sinon, je vais écrire un outil en C#, mais d'abord je veux savoir. Recherché google un peu, mais ne peux pas trouver assez d'informations.

EDIT: En attendant les réponses, j'ai commencé à taper un outil. Ce sera comme ça, mais je serai très heureux, si un outil déjà écrit en 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, allez, construire un, et laissez-moi savoir aussi bien :) –

+0

@Zein Shaikh comme je l'ai dit, s'il ny a pas un outil, je dois écrire et oui, je vous ferai savoir quand j'ai trouvé un outil, ou a écrit un outil :) –

Répondre

1
+0

Ceci est très proche de ce que je cherche. En vérifiant plus, vous retournera la rétroaction. Merci. –

+1

Ok, l'outil de Code Smith est vraiment bon, c'est un peu compliqué, mais si vous résolvez comment l'utiliser, c'est facile. Merci pour votre réponse. Cet outil peut être accepté comme une solution. –

+0

Oui, je suis d'accord c'est un peu compliqué mais une fois que vous l'avez compris, c'est un jeu d'enfant. J'ai utilisé cet outil il y a longtemps quand LINQ n'était pas encore là. Donc je l'ai utilisé en combinaison avec .netTiers – Raymund

1

Regardez texte modèle Transformation Kit pour Visual Studio - T4.