2014-02-06 60 views
0

我在WebApi 2默認項目中找不到「ApplicationContext」。在MVC5應用程序中有一個模型類中調用的ApplicationContext使用在web.config中定義的ConnectionString:Webapi 2 ApplicationContext丟失

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
{ 
    public ApplicationDbContext() 
     : base("DefaultConnection") 
    { 
    } 
} 

它很容易增加DbSets並在一個MVC5網頁項目一個上下文的所有數據,但是我無法在webapi 2項目中找到此課程。

在WebApi項目中,必須有一個擴展DbContext或IdentityDbContext的類,該類還使用連接字符串,但我已搜索整個項目並找不到它。是否可以在包含所有帳戶數據(用戶名,密碼哈希,角色,externallogins等)以及由我定義的所有其他數據(DbSets)的webapi 2項目中擁有應用程序範圍的DbContext?

在ApiController中似乎有一個UserManager類,但我看不出如何在那裏添加我自己的自定義數據。

回答

1

ApplicationDbContext類不是框架的一部分,所以你必須自己添加它。如果它不包含在模板中,您可以像在代碼片段中那樣輕鬆添加它。在你的情況下,你會創建一個從IdentityDbContext派生的上下文,而這個派生自DbContext。在這種情況下,您可以添加自定義DbSet的。如果您在創建此上下文時遇到麻煩,請將其從您現有的MVC5項目(我想您已經具備)複製到您的Web API項目中。

如果有任何錯誤,請確保您的項目中具有適當的NuGet引用,尤其是ASP.NET Identity的實體框架實現。

+0

但是,如何爲IdentityUser設置[Required]和[StringLength]屬性爲例子?我嘗試將DbSet Users添加到新創建的ApplicationContext中,並使用EntityTypeConfigurations來配置Required和Stringlength屬性,但我得到了此錯誤: 不支持每種類型的多個對象集。對象集「Users」和「Users」都可以包含「Applicationuser」類型的實例(擴展IdentityUser)。所以現在我剩下一個允許空值的數據庫,並且用戶名長度沒有限制(bindingmodel除外)。 – neo112

+0

您不必爲* IdentityUser *實施添加* DbSet *。這就是你得到這個錯誤信息的原因。 * null *值肯定是一個問題,但是您提到了一個很好的解決方法:在視圖/綁定模型上設置屬性。如果您正確地執行此操作,API的用戶將無法插入長度爲f.e的用戶名。三十個字符。 –