错误:不支持每种类型的多个对象集

时间:2014-05-01 14:23:57

标签: c# asp.net-mvc entity-framework entity-framework-6 asp.net-identity

以下是错误的详细信息:

  

运行所选代码生成器时出错:'无法执行   ' Models.ApplicationUser'的反向元数据。多个对象集   每种类型不受支持。对象设置' ApplicationUsers'和   '用户'可以包含' Models.ApplicationUser'。

类型的实例

我在MVC项目中搭建一个视图时得到了这个。如果我尝试scafford控制器,我得到了同样的错误。我在SO上看到了一些错误,但似乎那些不适用于我的情况。

这是我的DbContext。它只是带有默认MVC项目的DbSets。对于我的上下文或项目中的任何地方,我没有针对ApplicationUsers或Users或任何类似的DbSet。但为什么我会收到此错误?

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#。

2 个答案:

答案 0 :(得分:0)

我想这是你回答

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

你必须给用户类你的Icollection

答案 1 :(得分:0)

我一直面临同样的问题。

当我试图在我的代码中获取所有Application用户时,它会自动在ApplicationDbContext类中创建以下属性:

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

请删除此行,一切都会好的。