C# 以编程方式插入,但不能在linq中插入?

C# 以编程方式插入,但不能在linq中插入?,c#,visual-studio,visual-studio-2008,linq,linq-to-sql,C#,Visual Studio,Visual Studio 2008,Linq,Linq To Sql,如何以编程方式插入数据?但我不能这样做。没有错误返回,也没有在我的数据库中添加数据。我怎么做?我创建了一个扩展方法用于我的项目请看下面。我想添加扩展方法,但我不能。如何使用以下扩展方法添加数据 namespace TestEng { public partial class Form1 : Form { public Form1() { InitializeComponent(); } pr

如何以编程方式插入数据?但我不能这样做。没有错误返回,也没有在我的数据库中添加数据。我怎么做?我创建了一个扩展方法用于我的项目请看下面。我想添加扩展方法,但我不能。如何使用以下扩展方法添加数据

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;

            }

        }

    }
}

我看不出您在哪里调用engCtx.SubmitChanges来实际将更改推送到数据库


HTH.

错误发生在哪里?您是否可以删除与您的问题无关的代码?