2010-07-15 2 views
-1

프로그래밍 방식으로 데이터를 삽입하려면 어떻게해야합니까? 그러나 나는 그것을 할 수 없다. 오류없이 데이터베이스에 데이터를 추가하지 않습니다. 어떻게 할 수 있습니까? Extention 메서드를 만들어서 내 프로젝트 look.i에 추가하려면 extentionMethod를 추가하고 싶습니다.하지만 사용할 수는 없습니다. 어떻게 아래의 확장 방법으로 데이터를 추가 할 수 있습니까? 당신이 engCtx.SubmitChanges()을 실제로 데이터베이스에 변경 사항을 밀어 전화를 어디서 볼 수 없어프로그래밍 방식으로 삽입하지만 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

답변

2

...

HTH.

관련 문제