2010-07-15 4 views
-1

Comment puis-je insérer des données par programme? mais je ne peux pas faire ça. Aucune erreur ne retourne pas non plus l'ajout de données dans ma base de données. Comment puis-je faire cela? J'ai créé une méthode d'extension à utiliser dans mon projet s'il vous plaît ci-dessous.je veux ajouter extentionmethod mais je ne peux pas. Comment puis-je ajouter des données avec la méthode d'extension ci-dessous?Insertion par programmation mais je ne peux pas le faire dans linq?

namespace TestEng 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

      IEngManager engManager = new EngManagerTables(); 
      MyTable mytable = new MyTable(); 
      engManager.Load(mytable); 

      engManager.Save(mytable); 
     } 
    } 

    partial interface IEngManager 
    { 
     bool Load(ILoad engLoader); 
     bool Save(ISave engSaver); 
    } 

    public class EngManagerTables : IEngManager 
    { 

     #region IEngManager Members 

     public bool Load(ILoad engLoader) 
     { 
      return engLoader.Load(); 
     } 

     public bool Save(ISave engSaver) 
     { 
      return engSaver.Save(); 
     } 

     #endregion 
    } 
    public interface ILoad 
    { 
     bool Load(); 
    } 

    public interface ISave 
    { 
     bool Save(); 
    } 



    public class MyTable : ILoad, ISave 
    { 
     public List<MyTable2> myTable2 { get; set; } 
     public EngDataContext engCtx; 
     private ArrayList columnNames; 
     private ArrayList columnValues; 
     private string[] _columnNames; 
     private object[] _columnValues; 
     public MyTable() 
     { 
      myTable2 = new List<MyTable2>(); 
      columnNames = new ArrayList(); 
      columnValues = new ArrayList(); 
      engCtx = new EngDataContext(); 
     } 
     public bool Save() 
     { 
      try 
      { 
       foreach (var myObject in myTable2) 
       { 
        foreach (PropertyInfo info in myObject.GetType().GetProperties()) 
        { 
         if (info.CanRead) 
         { 
          object o = info.GetValue(myObject, null); 
          columnValues.Add(o); 
          string Name = info.Name.ToString(); 
          columnNames.Add(Name); 
         } 
        } 
        _columnNames = columnNames.ToArray(typeof(string)) as string[]; 
        _columnValues = columnValues.ToArray(typeof(object)) as object[]; 

        engCtx.DynamicInsertCustomerExtension(_columnNames, _columnValues); 
        break; 
       } 

       #region old 

       #endregion 

      } 
      catch (Exception ex) 
      { 

       MessageBox.Show("hata:" + ex.Message); 
      } 
      return true; 
     } 

     public bool Load() 
     { 
      myTable2 = engCtx.MyTable2s.Where(id => id.ID != null).Select(id => id).ToList(); 
      return myTable2.Count > 0; 
     } 
} 



    public static class MyTechnicEngineeringExtensionMethod 
    { 

     public static bool DynamicInsertCustomerExtension(this EngDataContext db, string[] columnNames, object[] columnValues) 
     { 

      try 
      { 
       if (columnNames.Length == 0 || columnValues.Length == 0) 
       { 
        throw new Exception("Kolon ismi veya degeri yanlış!"); 
       } 
       if (columnNames.Length != columnValues.Length) 
       { 
        throw new Exception("Kolon ismi ve degeri eşit uzunlukta degil!"); 
       } 
       MyTable2 entity = new MyTable2(); 
       for (int i = 1; i < columnNames.Length; i++) 
       { 
        entity.GetType().GetProperty(columnNames[i]).SetValue(entity, columnValues[i], null); 
       } 
       db.MyTable2s.InsertOnSubmit(entity); 
       return true; 
      } 

      catch (Exception ex) 
      { 

       MessageBox.Show(ex.Message); 

       return false; 

      } 

     } 

    } 
} 
+0

Où l'erreur se produit-elle? Pouvez-vous supprimer le code qui ne correspond pas à votre question? – stakx

Répondre

2

Je ne vois pas où vous appelez engCtx.SubmitChanges() pour pousser réellement les changements à la base de données ...

HTH.

Questions connexes