2011-09-06 145 views
0

我有兩個模型;用戶和客戶端。用戶可以擁有多個客戶端,而客戶端擁有一個用戶。項目經理堅持要求每個用戶客戶端獨立所以我必須爲每個創建的用戶動態生成新表。例如,用戶ABC將有一個名爲ABC_Clients的新表,用戶XXX將有一個名爲XXX_Clients的單獨表格等等。我的問題:我如何使用實體框架來做到這一點?我可以簡單地執行一個過程來創建新表,並使用ExecuteStoreQuery()執行手動查詢,但它似乎不會拉回關係(即延遲加載),是否必須以某種方式構建我的查詢?實體框架4.1動態生成表

+0

這個傢伙需要了解關於RDBMS設計的基本知識:) –

回答

3

這是優秀的設計。這將是非常容易使用,真的很好維護。恭喜你的經理,並告訴他做他的工作,讓你做你的工作。項目經理不是建築師,通常是技術知識欠佳的人。

有沒有辦法來支持這與EF。你必須完全用SQL(在這種情況下實際上是動態SQL)和舊的ADO.NET來完成它。 ExecuteStoreQuery永遠不會返回關係 - 它無法做到這一點。延遲加載無法正常工作,因爲標準延遲加載基於使用Entity框架映射的靜態數據庫結構。您的Client實體不能由EF映射,因爲它要求每個實體只能映射一次(=在一個表或一組相關表中以防止繼承或分裂)。您的Client實體需要映射的次數與表User中的用戶數量相同。

+0

我同意。他實際上是一名開發人員,並且說他是從「經驗」中講話的:如果您將客戶表放入我的錯誤中,那麼每個人都會受到影響,就好像它們被分離出來一樣,並且一個客戶表被錯誤地丟棄,它只會影響一個用戶客戶端。我知道他是從哪裏來的,但這就是數據庫備份的目的,等等。無論如何,我還是很重視。問題,謝謝:-) – eth0

+0

錯誤地刪除表格?那是什麼?這在正常的應用程序體系結構中不會發生,但它確實可能發生在您的應用程序必須具有刪除和創建表的權限的體系結構中。 –

+4

@ eth0如果你有空閒時間在[The Daily WTF]上發佈這個設計(http://thedailywtf.com/) – Eranga