2014-01-06 66 views
2

我在EF中使用繼承,感覺它引發的問題多於幫助,特別是將表聚合綁定到數據網格。我給出了一部分模型的屏幕。我想要做的是將FREQUENCY綁定到數據網格,並使網格字段基於FREQ_POOL(這是一個基類)的類型。例如,如果我想要一個POOL_IA數據網格,那麼它將具有這些字段以及FREQUENCY中的幾個字段。我使用繼承是因爲它是從OO的角度出發的。另一種方法是隻有很多0..1的關係表明FREQ_POOL有一個擴展的能力,但是我沒有任何限制,說FREQ_POOL只能是一種類型。什麼是更好的設計來實現這一點,並使數據綁定更容易?感謝您的任何指導。EF-替代繼承

enter image description here

+0

在那條路上,我個人結束了很多0/1關係而不是繼承。我從未困擾過試圖在數據庫約束級別強制執行「只有一種類型」,除了在父表上有一列指明它代表什麼,因此代碼有一種知道要檢索哪個子實體的方法。當然,表現要比繼承好得多。 – AaronLS

+0

非常感謝。這很有道理。我希望在EF中使用繼承更容易。 –

回答

0

一種方法可以創建一個數據網格從FREQ_POOL獲取數據,然後把所有的POOL_IA變量(或使用反射派生類的所有屬性)FREQUENCY和。

如果您真的不需要在綁定數據網格時使用對象並且可以使用DataSet,那麼另一種方法可能是通過Context.Entry方法即時獲取所有屬性和條目的值,並將其放入DataSet中動態。

+0

這是有道理的。但是,我擔心新的行創建過程會很複雜,因爲爲了創建新行,我必須手動執行所有操作(如果是這種情況,這很好)。 –

+0

這就是機會成本:) – kkocabiyik