views:

74

answers:

1

How can i insert data programmatically? but i can not do that. No error return also no adding data in my database.How can i do that? i created a Extention method to use in my project look please below.i want to add extentionmethod but i can not. How can i add data with below extention method?

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;

            }

        }

    }
}
+2  A: 

Hey,

I don't see where you call engCtx.SubmitChanges() to actually push the changes to the database...

HTH.

Brian