我目前通过索引引用通用数据集,并希望将其转换为表类型的强类型DataSet。问题是我的DataRow索引是一个变量。使用列名变量的强类型数据集
目前我正在做以下从数据库中取出History_Column值的位置。
e.Dr[c.History_Column.ToString()] = Entry;
我想定义的DataRow(“博士”的例子)作为表的类型,所以我可以做类似下面的东西:
e.Dr.COLUMN_NAME = Entry;
如何我可以以这种方式使用动态变量吗?
谢谢!
我目前通过索引引用通用数据集,并希望将其转换为表类型的强类型DataSet。问题是我的DataRow索引是一个变量。使用列名变量的强类型数据集
目前我正在做以下从数据库中取出History_Column值的位置。
e.Dr[c.History_Column.ToString()] = Entry;
我想定义的DataRow(“博士”的例子)作为表的类型,所以我可以做类似下面的东西:
e.Dr.COLUMN_NAME = Entry;
如何我可以以这种方式使用动态变量吗?
谢谢!
你可以使用动态类型让你成为那里的一部分,但是你的目标听起来有点矛盾。
dynamic Dr = new ExpandoObject();
Dr.whatever = 6;
Dr.anything = "asdf";
如果使用ExpandoObject
与dynamic
,您可以指定任何属性。
也许问题应该是,是否有可能使用动态索引,因为我试图做,仍然能够做到这样的DataTable.Rows.Add(Dr),然后TableAdapter.Update(DataTable)?在这种情况下,我使用从强类型DataSet创建中创建的DataTable和TableAdapter。 – McArthey 2011-04-12 16:35:47
强类型数据集是应用程序中源自内置数据集类的类。您必须将它们添加到Visual Studio中的项目中。以下是creating strongly typed datasets的一些说明。然而,我建议你借此机会重构数据集并完全脱离数据集(如果可以的话)。 Entity Framework为每列提供强类型属性访问器,更好的“工作单元”模式,图形化数据库映射工具,使用起来更加简单。
谢谢。我想花时间重构我的应用程序,因为我意识到还有其他“更好”的选择,但我现在没有时间这样做,而且目前我的公司不支持。不过,我会在未来记住这一点。感谢您抽出时间回复。 – McArthey 2011-04-12 16:56:27
你想要强类型,还是要动态?两种完全不同的方式来处理它。 – 2011-04-12 16:20:45
我需要让它动态地运行,但我遇到了TableAdapter Update()的问题。它告诉我尽管为列指定了新值,但该行已经存在。主键没有改变,所以我认为重点是更改会被识别,数据库更新命令会执行?这是不是由于我的“动态”创建,并失去了DataSet的强类型性质? – McArthey 2011-04-12 16:28:49