2

下面是錯誤的詳細信息:錯誤:每個類型的多個對象集,不支持

There was an error running the selected code generator: 'Unable to retrive metadata for 'Models.ApplicationUser'. Multiple object sets per type are not supported. The objects sets 'ApplicationUsers' and 'Users' can both contain instances of type 'Models.ApplicationUser'.

我得到這個,而腳手架MVC項目中的視圖。我得到了同樣的錯誤,如果我嘗試scafford控制器。我已經看到了一些這樣的錯誤,但它似乎不適用於我的情況。

這是我的DbContext。它只是帶有幾個DbSets的默認MVC項目。我沒有任何DbSet的ApplicationUsers或用戶或類似的東西在我的上下文或項目中的任何地方。但是,爲什麼我得到這個錯誤?

public class ApplicationUser : IdentityUser 
{   
} 

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

    public virtual DbSet<ItemType> ItemTypes { get; set; } 
    public virtual DbSet<Item> Items { get; set; } 
    public virtual DbSet<Category> Categories { get; set; } 
    public virtual DbSet<List> Lists { get; set; } 
    public virtual DbSet<Level> Levels { get; set; }   
} 

這是我的List類。我懷疑這個錯誤與它有關。但爲什麼?

public class List 
{ 
    public int Id { get; set; } 
    [Required] 
    public string Name { get; set; }   
    public string UserId { get; set; } 

    public virtual ICollection<Item> Items { get; set; } 
    public virtual ApplicationUser User { get; set; } 
} 

這是在所有實體中唯一引用ApplicationUser的地方。還有一個問題,有點偏離主題是「擴展IdentityDbContext而不是在應用程序中創建新的DbContext是不好的決定?

環境:MVC5,EF6 Code First,VS2013 Ultimate,C#。

+1

你用'DbContext'試過了嗎?你有同樣的錯誤嗎? –

+0

嗨Inanikian,感謝您的評論。我不明白。由於ApplicationUser是從IdentityUser繼承的,如果我將IdentityDbContext更改爲DbContext,那麼在應用程序中將會有數十個錯誤。我該怎麼辦? – lawphotog

+0

[VS 2013控制器腳手架失敗的可能重複的應用程序用戶模型(不支持多個對象集每個類型)](http://stackoverflow.com/questions/19888576/vs-2013-controller-scaffolding-fails-for-所述-applicationuser模型-多OBJ) –

回答

0

我覺得這是你回答

public class ApplicationUser : IdentityUser 
{ 
     public virtual ICollection<List> Lists{ get; set; } 
} 

你必須給用戶類的ICollection的

0

我一直面臨着同樣的問題。

當我試圖讓所有應用程序用戶在我的代碼,它會自動創建下列財產中ApplicationDbContext類:

public System.Data.Entity.DbSet<IHM_Cloud_ERP.DataInputManagerWebUI.Models.ApplicationUser> ApplicationUsers { get; set; } 

請刪除此行,一切都會好起來的。

相關問題