2010-07-15 42 views
-1

如何以編程方式插入數據?但我不能那樣做。沒有錯誤返回也沒有在我的數據庫中添加數據。我該怎麼做?我創建了一個Extention方法在我的項目中使用請看下面。我想添加extentionmethod但我不能。我如何使用下面的擴展方法添加數據?以編程方式插入,但我不能在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

錯誤發生在哪裏?你能否刪除與你的問題無關的代碼? – stakx 2010-07-15 11:23:04

回答

2

我沒有看到你打電話engCtx.SubmitChanges()來實際推更改數據庫...

HTH。

相關問題