2011-01-28 58 views
2

我曾在MVC 2的時間表應用程序應用程序中供公司內部使用。現在其他小公司已經表現出對該應用的興趣。我沒有考慮過這個應用程序的使用,但它讓我對它意味着什麼感興趣。在Asp.Net MVC應用程序中以編程方式創建新數據庫?

我相信我可以通過修改數據庫(實體框架模型訪問的Sql Server)使它適用於多個客戶端。但我已經閱讀了一些倡導多個數據庫的人(每個客戶端一個)。因爲我不會冒險將各種客戶端的數據混淆在同一個數據庫中(當然不應該發生這種情況,但如果它真的發生了......),直觀地感覺這是一個好主意。但是如何特別實施多個數據庫解決方案?

I.e.只需一個數據庫,我就可以擁有一個客戶端註冊表,並且所需的所有數據都將以應用程序的方式添加,就像現在只有一個客戶端(我自己的公司)時一樣。

但是對於多數據庫解決方案,如何在用戶註冊時以編程方式創建新數據庫?請注意,我已經完成了所有使用Linq to Sql的數據庫內容,並且我對常規SQL編程不是很熟悉......

我真的很感謝如何做到這一點的清晰的詳細解釋(以及輸入關於這是一個好主意還是由於某種原因單個數據庫會更好)。

編輯:

我也看到了有關單個數據庫替代的討論,這表明你會再添加客戶端Id到每個表...但是那不是很難在代碼維護?我將不得不在我認爲的很多linq查詢中添加「where」條件......並且我假設每個表上都有一個ClientId意味着每個表都需要與Client表有多對一的關係?這不是一個非常複雜的數據庫結構嗎?

因爲它是現在(未經客戶表)我有以下表(1 - > *標明一對多的關係):

客戶1 - > *項目1 - > *任務1 - > * TimeSegment 1 - > *員工

此外,客戶與TimeSegment直接有一對多關係,爲了方便簡化某些查詢。

到目前爲止,這工作得很好。難道只有一個客戶表(或用戶公司或任何人可能稱之爲)與客戶表有一對多的關係嗎?數據完整性不足以滿足其他表格,因爲其餘表格由關係處理?

回答

1

至於是否使用單個數據庫或多個數據庫,這一切都取決於用例。更多的數據庫意味着更多的管理需求,潛在的更多的磁盤空間需求等等。在這裏有更多的事情需要考慮,而不僅僅是如何創建數據庫,比如你如何自動創建備份過程等。我個人會使用一個數據庫一個很好的認證系統,可以將數據過濾到適當的客戶端。

關於創建數據庫,請查看this blog post。它描述瞭如何在c#.net中使用SMO(sql管理對象)來創建數據庫。他們是一個非常整潔的工具,你一定要熟悉它們。

要處理後續問題,是的,客戶和客戶之間的單一頂級關係應該足以將新客戶限制在適當的數據。

沒有關於您的應用程序的任何真正的知識我不能說這是多麼複雜的表將是,但假設您的數據層達到鼻菸,我會認爲你真的只需要限制客戶類的當前客戶端,然後根據可用客戶獲取所有其他數據。

確實有意義嗎?

+0

感謝。不過,請參閱我的後續流程,瞭解如何處理單個數據庫關係? – Anders 2011-01-28 23:54:44

+0

@Anders Svensson,編輯後續問題。 – 2011-01-29 04:36:00

相關問題