2012-04-05 30 views
0

我有名字,如如何映射與不同勢架構名稱動態表

JS工程服務$ Web用戶設置頁眉 薩欽銷售&服務私人有限公司$ Web用戶設置頁眉

我如何將這些表與Ado.net實體框架映射POCO代碼的第一種方法?表結構是相同的。我已經完成了帶有單表名稱和架構的POCO,因爲Dbo只是宣佈類似

網頁用戶設置。

此外,我想問一下,如何使用空格創建像名稱一樣的表。就像我剛纔提到的那樣。如果我們要與空間創建表的名字怎麼做動態生成一個表名作爲

薩欽銷售&服務私人有限公司$ Web用戶使用Ado.net實體框架設置頁眉

Codefirst方法?

以前我用Nhibernate,所以最近轉移到Ado.net實體框架。喜歡Ado.net Codefirst方法中的Fluent配置。有人可以用上述場景指導我如何處理它?任何虛擬屬性都會受到歡迎。沒關係。我只是想動態生成表名基於事實上兩個scemas包含完全相同的列

+0

爲什麼你想要生成這些表?你提到你已經有這些表? – 2012-04-05 07:31:07

+0

@LadislavMrnka是的,我已經有了這些表,但我想用Entity Framework來映射它們。其實他們是navision桌子。所以我想在幕後使用實體框架來檢索數據。 – Joy 2012-04-05 08:42:31

回答

0

...不知道這是你在找什麼,但有兩件事情要解決這裏似乎:

表命名,你嘗試過以下...
(從: DbContext實現類,方法protected override void OnModelCreating(DbModelBuilder modelBuilder)

modelBuilder.Entity<JSEngineeringServicesWebUser>() 
    .ToTable("JS Engineering Services$Web User"); 

(注:你可能需要用這個實驗,我的天堂」工作w/s uch名稱,並沒有它方便測試,試試快)

另一種選擇是使用[Table("JS Engineering Services$Web User")]作爲您的實體類的屬性。 (注意:我個人更喜歡流體方法,因爲它給了你更多的控制權(對於其他的東西,鍵,關係),並且在混合這兩種情況下並不常見)

...或者看看這個,類似的問題Can I change the default schema name in entity framework 4.3 code-first?

而第二個問題是事實表可能是「臨時表」。這實現起來有點棘手。但是如果你在Db中擁有它們(只需看看並作爲臨​​時表),那麼你可以繼續前進,並像其他實體一樣映射。

如果您需要創建和拆除的動態 - 在這裏再考慮這個帖子,有類似的東西...

Cache table with Entity Framework 4

編輯:從下面的評論,更新...

如果「臨時」表始終是相同的像你說的是 -

那麼你應該確定用什麼在Cache table with Entity Framework 4 - 創建一個模型來匹配表模型,甚至你可能需要創建像這樣的一個表(總是在那裏,我不確定如果代碼優先可能會抱怨,如果沒有在開始匹配,或與'使用現有的數據庫'W/O檢查運行),並使用'直'SQL運行查詢(來自上下文類,如鏈接中所述) - 然後列出輸出到該模型類。它可能只是工作:)

+0

是的,我可以那樣做。它滿足我的查詢很多。但是如果在動態基礎上添加新的模式呢?但「網絡用戶」的足跡仍然相同。我可以做到這一點靜態的方式。因爲'JS Engeneering Services'是公司名稱,不受應用程序控制。它由navision控制。每當添加一個新公司時,就會添加一個新的模式,並且表名會是'Sachin Sales&Pvt LTD $ Web User' – Joy 2012-04-07 05:01:57

+0

這些表的結構總是一樣的?只是名稱改變?問題是EF對於臨時表和類似表現並不好。你必須要解決,看看上面的'使用Entity Framework 4的緩存表'鏈接。您可以執行並獲取自定義SQL,這是您最好的選擇。如果你可以以某種方式匹配你的'動態表',以便總是匹配某個預定義的模型(無論表名是什麼,我的意思是字段/屬性的匹配類型非常多),那麼你可以執行自定義SQL,在那裏調整命名 - 並在出口泵進入已知模型類的「列表」中。 – NSGaga 2012-04-07 15:02:18

+0

即沒有完美的解決方案 - 您甚至可能需要先將EF /代碼優先與自定義SQL查詢/提取混合。總之,我建議你在這裏找到一些共同點,並且最低限度的要求,把你需要的分數縮減到一分鐘,然後嘗試解決。 – NSGaga 2012-04-07 15:03:50

相關問題