2011-04-12 64 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