2014-09-18 83 views
4

我是相當新的實體框架,和我的工作對正在使用實體框架6的一個項目,身份2,網頁API 2和MVC 5.在另一種情況下引用的用戶身份

在項目的初始工作中,我創建了一個BusinessConnectionsContext來表示我的業務模型的構建。到目前爲止,我已將自動創建的ApplicationDbContext保留到自己的設備中。我主要關注Web Api 2.

在我的解決方案中,我有一個用於模型的程序集,其中包含BusinessConnectionsContext和ApplicationDbContext,Web Api的程序集以及使用MVC5的Web程序集。 WebApi和Web程序集都將使用Models組件。

我已經到了需要將ApplicationDbContext用戶與BusinessConnectionsContext關聯的點,但我找不到任何關於此的信息。我感覺我可能會做錯事。

應該將BusinessConnectionsContext中的所有模型重新定位到ApplicationDbContext中?

這似乎是一個相當沉重的舉動。如果你有其他不相關的環境需要鏈接到一個系統中的身份,通常會發生什麼?

+0

您是否需要通過除Id以外的任何內容引用用戶? – Excommunicated 2014-10-28 18:22:27

+0

還不是。自從將ApplicationDbContext合併到BusinessConnectionsContext後,我就使BusinessConnectionsContext擴展了IdentityContext(或者其他所謂的)。但是,因爲大多數ApplicationUser操作都由ApplicationUserManager提供服務,該UserManager是使用UserStore 的UserManager的擴展,所以我總是必須通過ApplicationUser.Id引用其他模型中的用戶,並且難以加載可能是通過任何其他模型參考。 – Reuben 2014-10-28 23:16:13

+0

我想我問,你是否只需要當前登錄的用戶信息爲特定的任務,或者你想獲得任何用戶信息?有幾種不同的解決方案,取決於您的實際要求。 – Excommunicated 2014-10-30 14:10:15

回答

1

簡短的答案是所有的模型應該位於一個上下文中。可以使用默認創建的ApplicationDbContext,也可以自己創建。到目前爲止,我還沒有看到任何涉及可能在兩個上下文之間共享的Identity模型的內容,並且我也不希望事務也會跨越多個上下文。

至於當你有其他不相關的上下文需要鏈接到一個系統中的身份會發生什麼?我不知道。我可以說,你在不同的命名空間中也有上下文和模型,並且一次只能使用一個上下文,特別是當涉及到更新時。


一兩件事,略無關的問題,是ApplicationUserManager,爲IUserStore包裝的問題。

我有幾個項目使用一個上下文,但因爲他們對於誰正在訪問項目有不同的期望(一個用於管理員通過web,一個用戶通過web,另一個用於通過webapi的特殊用戶),他們都有他們自己的ApplicationUserManager。在某個時候,我決定使用Unity來確保所有存儲庫和工作的統一共享一個環境。我還必須確保此上下文也用於ApplicationUserManager使用的IOwinContext。由於我不是這方面的專家,因此我不會在這裏詳細討論(我想這是另一個問題的答案),但可以說,就多個項目之間共享的環境和身份問題而言,這是要保留的東西心裏。

相關問題