2011-04-12 60 views
0

我目前通过索引引用通用数据集,并希望将其转换为表类型的强类型DataSet。问题是我的DataRow索引是一个变量。使用列名变量的强类型数据集

目前我正在做以下从数据库中取出History_Column值的位置。

e.Dr[c.History_Column.ToString()] = Entry;

我想定义的DataRow(“博士”的例子)作为表的类型,所以我可以做类似下面的东西:

e.Dr.COLUMN_NAME = Entry;

如何我可以以这种方式使用动态变量吗?

谢谢!

+0

你想要强类型,还是要动态?两种完全不同的方式来处理它。 – 2011-04-12 16:20:45

+0

我需要让它动态地运行,但我遇到了TableAdapter Update()的问题。它告诉我尽管为列指定了新值,但该行已经存在。主键没有改变,所以我认为重点是更改会被识别,数据库更新命令会执行?这是不是由于我的“动态”创建,并失去了DataSet的强类型性质? – McArthey 2011-04-12 16:28:49

回答

3

你可以使用动态类型让你成为那里的一部分,但是你的目标听起来有点矛盾。

dynamic Dr = new ExpandoObject(); 
Dr.whatever = 6; 
Dr.anything = "asdf"; 

如果使用ExpandoObjectdynamic,您可以指定任何属性。

+0

也许问题应该是,是否有可能使用动态索引,因为我试图做,仍然能够做到这样的DataTable.Rows.Add(Dr),然后TableAdapter.Update(DataTable)?在这种情况下,我使用从强类型DataSet创建中创建的DataTable和TableAdapter。 – McArthey 2011-04-12 16:35:47

0

强类型数据集是应用程序中源自内置数据集类的类。您必须将它们添加到Visual Studio中的项目中。以下是creating strongly typed datasets的一些说明。然而,我建议你借此机会重构数据集并完全脱离数据集(如果可以的话)。 Entity Framework为每列提供强类型属性访问器,更好的“工作单元”模式,图形化数据库映射工具,使用起来更加简单。

+0

谢谢。我想花时间重构我的应用程序,因为我意识到还有其他“更好”的选择,但我现在没有时间这样做,而且目前我的公司不支持。不过,我会在未来记住这一点。感谢您抽出时间回复。 – McArthey 2011-04-12 16:56:27