我的应用程序中有几个强类型数据集。编写更新数据的方法变得乏味,因为每个方法都有多个表。我想创建一个可以轻松更新所有表的通用函数。我不介意我是否必须为每个 DataSet 创建其中一个,但如果一个函数可以处理所有这些,那就太棒了!
将有任意数量的新记录、更新记录或删除记录,并且应正确标记每一行。这个函数应该只是处理实际的保存。这是我到目前为止所拥有的:
private bool SaveData(object oTableAdaptor, object ds)
{
try
{
Type oType = oTableAdaptor.GetType();
MethodInfo[] oMethodInfoArray = oType.GetMethods();
foreach (MethodInfo oMI in oMethodInfoArray)
{
if (oMI.Name == "Update")
{
ParameterInfo[] oParamaterInfoArray = oMI.GetParameters();
foreach (ParameterInfo oPI in oParamaterInfoArray)
{
Type DsType = null;
if (oPI.ParameterType.Name == "NameOfDataSet")
{
DsType = typeof(MyDataSet);
// get a list of the changed tables???
}
if (((DataSet)ds).HasChanges() == true)
{
if (oPI.ParameterType == DsType)
{
object[] values = { ds };
try
{
oMI.Invoke(oTableAdaptor, values);
}
catch (Exception ex)
{
System.Diagnostics.Debug.WriteLine(oTableAdaptor.GetType().Name + Environment.NewLine + ex.Message);
}
}
}
}
}
}
}
catch (Exception Exp)
{
System.Diagnostics.Debug.WriteLine(Exp.Message);
if (Exp.InnerException != null) System.Diagnostics.Debug.WriteLine(Exp.InnerException.Message);
return false;
}
return true;
我已经从另一个开发人员在不同应用程序中的另一段代码中改编了这个。到目前为止的主要区别是他传入了一个数据适配器数组(对象类型),并将三个 DataSet(全局实例化)中的每一个都设置为单独的 if 块内的 foreach(oParamaterInfoArray 中的 ParameterInfo oPI)块(其中我的 ' NameOfDataSet' 将是数据集之一)
任何人都可以在完成这个功能的方向上给我一点推动(或推动?)吗?我知道我就在那儿,但感觉就像我在寻找某些东西。这段代码编译没有错误。