我已經實現了處理某種對象的內容管理系統,現在客戶端已經引入了另一種類型的對象,其結構和行爲完全相同,但是分離。他們希望能夠切換模式,其中每個模式的行爲是相同的,除了一個處理一個對象類型而另一個處理另一個。Linq to Entities在運行時控制表名稱解析
假設第一個對象類型存儲在名爲TBL_OBJECT的表中,而第二個名爲TBL_OBJECT_NEW。我正在尋找一種方法來使用我現有的代碼,但能夠實時切換並切換到其他表格。因爲結構是相同的,所以這在概念上是可能的。唯一的問題是,在L2E,表名被保存爲屬性和編譯,所以我在尋找一種方式來掛鉤的SQL語句創建過程,讓我現有的聲明是這樣的:
Dim db as New DataContext
Dim query = From obj in db.Objects
將解析爲TBL_OBJECT_NEW表而不是TBL_OBJECT表。如果我能做到這一點,我可以重複使用大量的代碼。我知道這是一個有點不尋常的場景,但我真的希望這是可能的。任何幫助非常感謝!謝謝。
順便說一句,我使用DevArt的LinqConnect來做這件事;我不知道一個簡單的L2E方法會對此適用多少。另一方面,如果您知道如何使用DevArt但不使用L2E,那仍然非常有幫助。
這對我有效,雖然我遇到了一個奇怪的問題,代碼開始給出一個錯誤「找不到提供程序類型」,它以前沒有找到。我能夠通過在DevArt dll上將CopyLocal設置爲True來解決此問題。不知道爲什麼它無法使用這種方法在GAC中找到它們,但可以使用其他方法。我還發現保留lqml文件的一個副本並實時翻轉表名是比較方便的,而不是保留兩個單獨的副本。無論如何,我很高興能夠做到我所需要的相對簡單。謝謝。 – 2011-02-15 13:43:12