-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;
}
}
}
}
錯誤發生在哪裏?你能否刪除與你的問題無關的代碼? – stakx 2010-07-15 11:23:04