2015-06-04 42 views
0

我剛剛開始爲一家新公司工作,並且負責爲我們的外部產品構建支持工具。目前,支持工具是大量隨機部分的混搭,試圖通過大量不同的技術來解決各種不同的問題。主要產品正在過渡到執行應用程序大部分功能的功能模型,但它使用存儲過程來獲取數據並將數據加載到這些模型。在沒有存儲過程的情況下綁定WebForms中的數據模型的最有效方法?

在編寫新工具的過程中,我一直在尋找一種更好的方法將數據庫中的數據綁定到模型上,以便在應用程序內部進行操作。每個客戶都有自己的數據庫,並且每次創建存儲過程時,都必須跨多個不同的數據庫創建,以便全局傳播。如果我能減輕這種頭痛,那將是非常有益的。

我正在考慮使用DbContext的方式類似於我之前在MVC中使用它的方式,但我不確定如何最好地執行此操作。每個客戶端都有自己的數據庫,其名稱中包含一個客戶端ID,而且它們的連接字符串本質上是「DATABASE_CLIENTID」,所以當支持人員選擇適當的客戶端時,它會在運行時更改連接字符串以獲取適當的數據。我只需要知道什麼方法最適合與這些數據交互來創建我們的工具。

該公司正在使用Rivets,Typescript,Ajex等切換到單頁風格的網站,所以最能模仿內部的東西是我們的目標。

回答

0

我認爲你可以很容易地通過使用最新的實體框架6做到這一點,當你使用數據庫第一種方法生成模型時,它會生成部分實體類,並且你想要做的是添加另一個文件來實現以下相同的部分類。因此,舉例來說,如果你的實體模型稱爲TemplateEntities,然後創建下面的代碼一個新的文件:

The generated TemplateEntities class is marked as partial. 

所有你需要做的就是添加一個文件,部分類定義的另一部分暴露的構造你想要使用:

partial class TemplateEntities 
{ 
    public TemplateEntities(string nameOrConnectionString) 
    : base(nameOrConnectionString) 
    { 
    } 
} 

然後傳遞你的連接字符串到這個構造函數。

存儲過程適用於非常複雜的事務,但如果僅用於加載數據,則實體框架應按預期工作。

+0

Code-First可以做同樣的事嗎? –

+0

是的,代碼優先也可以做到這一點,但通常代碼優先將用於沒有可用數據庫的全新應用程序,似乎在你的情況下,你已經有了一個數據庫,因此Model-First會更多我認爲自然的做法。 –

相關問題