2011-07-01 94 views
1

我正在使用已存在的SQL Server數據庫的C#中創建ASP.NET MVC3項目。已在不同數據庫中構建SQL Server的ASP.NET MVC 3

SQL Server有不同的數據庫,每個客戶一個。每個客戶數據庫都有很多表格,但我只對一個表格感興趣。

所以,我有興趣從每個客戶的同一張表中檢索(而不是更新或刪除)數據。 這是數據庫配置示例:
DatabaseCustomerName1
- TableNeeded

DatabaseCustomerName2
- TableNeeded

DatabaseCustomerNameN
- Tableneeded

的問題是...我怎麼創建模型?

瞭解如果我只需要爲一個客戶完成這項工作,我會根據表格的字段創建模型,那麼如何管理擁有多個客戶的情況呢?

在此先感謝。

阿提拉

回答

1

你應該有例如倉儲類 和不同的實現爲每個custumer數據庫

internal interface IProductRepository 
{ 
    IEnumerable<Product> GetAll(); 
} 

class ProductRepositoryCustumerOne : IProductRepository 
{ 
    public IEnumerable<Product> GetAll() 
    { 
     //code to retrieve data 
    } 
} 

class ProductRepositoryCustumerTwo : IProductRepository 
{ 
    public IEnumerable<Product> GetAll() 
    { 
     //code to retrieve data 
    } 
} 

的接口後,你可以用IoC容器是什麼實現你需要

+0

我認爲這是一個非常乾淨的解決方案,但我需要動態地管理這種情況,他們可以創建一個新客戶,我應該處理它,而不必每次創建一個新類。這種解決方案有沒有辦法? – Attila

+0

如果您將使用IoC容器,則Repository類的對象將創建爲單例,這意味着一次 – Serghei

0

注入讓我來澄清一下你的問題,你是否說過你有一個數據庫的客戶有多個 ?

所以......

數據庫

  • 客戶A
  • 客戶B

併爲每個這些客戶的你說你有,你要到一個表訪問所以你有

  • 客戶A> TheTable
  • 客戶B> TheTable

所以你問,你怎麼能建立一個模型,對任何客戶的工作訪問TheTable?

這是正確的嗎?

+0

正確。到目前爲止,我創建了模型來「模擬」公共桌子。例如,如何在「摘要」頁面中打印所有客戶的同一張表的價值?按客戶排序(即跟蹤數據庫名稱) – Attila

0

怎麼樣基於選擇鏈接這超過所有表創建一個SQL視圖:

Select 'Customer 1' as Customer, c.* from FirstDb.dbo.Cusotmers c 
Union Select 'Customer 2' as Customer, c.* from SecondDb.dbo.Cusotmers c 
Union ... 

比你能韓德爾這一觀點與例如EF或LINQ到SQL。

+0

有趣的解決方案,我會問數據庫管理員是否可以創建這種視圖。 但是,如何在視圖中跟蹤客戶來源?通過這種方式,我只能看到所有客戶的所有數據,我怎麼能看到客戶訂購的視圖? – Attila

+0

那麼,在這個例子中,你有一個名爲「客戶」的專欄。如果您正在使用Linq,只需按照您的要求訂購即可: 'Customers.OrderBy(c => c.Customer)...'' –

0

假設您使用實體框架是否安全?所有數據庫中的模式是否相同?

您應該能夠針對其中一個數據庫創建模型。然後,無論何時您想選擇不同的客戶,您在創建數據上下文之前都需要更改連接字符串中的初始目錄(或等效值)。

我目前沒有任何代碼。這有幫助嗎?

+0

我正在使用Linq to Sql,對不起,我忘了提及它。 所有數據庫中的模式都是相同的。問題是我必須在一個頁面中顯示所有客戶的數據,而不是一個接一個地顯示 – Attila

相關問題