2014-11-03 61 views
0

我使用EF6 Code First。EF 6代碼第一ASPIdentity在單獨的數據庫中的表

我有一個包含上下文「IdentityDBContext」指向一個「IdentitySecurity」數據庫和IdentityModels類庫「IdentitySecurity」。

然後我有一個包含上下文「ProjectDBContext」,指向「項目」的數據庫和ProjectModels我的web項目。

如果我創建像這樣ProjectModels模型:

public class Project 
{ 
    public int ProjectId { get; set; } 

    public virtual IdentitySecurity.Models.ApplicationUser UpdateUser { get; set; } 
} 

它不能創建一個遷移,我想這是因爲它不能對其它數據庫中的外鍵關係,並期望在項目數據庫中。

當您嘗試創建一個新的遷移它得到的錯誤是這樣的:

Project.Models.IdentityUserLogin:::的EntityType「IdentityUserLogin」有模型生成過程中檢測到

一個或多個驗證錯誤沒有定義密鑰。定義此EntityType的關鍵字。 Project.Models.IdentityUserRole::EntityType'IdentityUserRole'沒有定義鍵。定義此EntityType的關鍵字。 IdentityUserLogins:EntityType:EntitySet'IdentityUserLogins'基於沒有定義鍵的類型'IdentityUserLogin'。 IdentityUserRoles:EntityType:EntitySet'IdentityUserRoles'基於沒有定義鍵的類型'IdentityUserRole'。

我碰到類似的另一個例子是我有一個配置表,多個應用程序使用在一個公共的數據庫區域。我試圖在這樣的模型中引用它:

public virtual Common.Models.CommonItem CommonItem {get;組; }

在這種情況下,它添加了遷移並更新了數據庫而沒有錯誤,但是它所做的實際上是在項目數據庫中創建表「CommonItem」,而不是使用Common數據庫中的表。

有沒有辦法設置EF6的CodeFirst,所以我可以在另一個數據庫中配置表或ASPIdentity表,仍然引用它們作爲虛擬對象?

謝謝。

回答