以下是错误的详细信息:
运行所选代码生成器时出错:"无法"模型"的检索元数据。ApplicationUser'。多个对象集不支持按类型。对象集"ApplicationUsers"one_answers"Users"都可以包含"Models"类型的实例。ApplicationUser'。
我是在MVC项目中构建视图时得到的。如果我试图清理控制器,我也会遇到同样的错误。我在SO上看到过一些这样的错误,但这些错误似乎不适用于我的情况。
这是我的DbContext。它只是默认MVC项目附带的一个,只包含几个DbSet。我的上下文或项目中的任何地方都没有任何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#。
我想这就是你回答
public class ApplicationUser : IdentityUser
{
public virtual ICollection<List> Lists{ get; set; }
}
您必须为用户类提供您的Icollection
我一直面临着同样的问题。
当我试图在代码中获取所有应用程序用户时,它在ApplicationDbContext类中自动创建了以下属性:
public System.Data.Entity.DbSet<Xxx.DataInputManagerWebUI.Models.ApplicationUser> ApplicationUsers { get; set; }
请删除这行,一切都会好起来的