我試圖將我的應用程序部署到測試環境,但無法讓實體框架與數據庫很好地配合。在開發過程中,我使用數據庫初始化程序爲數據庫創建種子,並且工作完美無瑕。但是,當我將應用程序部署到實際的IIS實例時,我無法使其與數據庫接口。我的自定義初始化規則根本沒有運行,所以我改爲手動創建數據庫。爲什麼我的實體框架代碼第一個DbContext沒有顯示我填充表中的實體?
我使用ObjectContext.CreateDatabaseScript()作爲我的SQL腳本的起點,並且SSMS驗證在適當的表中填充了兩行。
運行應用程序後出現問題。我有自定義成員資格和角色提供者,這兩者似乎都沒有檢測到數據庫中存在兩種角色。
如何讓我的實體框架認識到這些行不是空的?我目前在存儲庫中使用私有DbContext來處理與實體框架的通信,並禁用了我的自定義初始值設定項,直到解決了這個問題。試圖在數據庫中找到角色
代碼:
context.Roles.Single(r => r.Name == role)
的數據庫顯示在角色表如下:
Id Name Description
1 Company NULL
2 Customer NULL
的LINQ生成一個空序列例外,因爲context.Roles是空的。
可能看起來像一個明顯的一點,但你有沒有明確設置你的web.config中的應用服務的連接字符串?在本地開發機器上,由於通過sqlserver express數據庫的配置方面的約定,按照dbcontext名稱等等,所有的都會好的。 – 2012-02-17 17:02:15
@jimtollan指定了一個連接字符串。 – XBigTK13X 2012-02-17 17:09:51
好的 - 這有助於縮小它..會回來一點。如果你查詢:'context.Roles.All()'(或者你的包裝器對All())所需要的任何東西 - 剛剛看到你提到了context.Roles是空的! - 忽略我的評論 – 2012-02-17 17:10:50