C# 引用ApplicationUser并获取多个对象集时出错
我已经学习了教程,但似乎无法让它发挥作用。我试图实现的是,我有一个客户模型,其中有一个负责人处理客户。该所有者是任何应用程序用户。现在这是我面临的问题: 不支持每种类型有多个对象集。对象设置为 “ApplicationUsers”和“Users”都可以包含类型为的实例 “MyApp.Models.ApplicationUser” 这是客户机模型。我在那里添加了applicationSerid,以便有时更容易直接使用它C# 引用ApplicationUser并获取多个对象集时出错,c#,asp.net-mvc,entity-framework,asp.net-identity,C#,Asp.net Mvc,Entity Framework,Asp.net Identity,我已经学习了教程,但似乎无法让它发挥作用。我试图实现的是,我有一个客户模型,其中有一个负责人处理客户。该所有者是任何应用程序用户。现在这是我面临的问题: 不支持每种类型有多个对象集。对象设置为 “ApplicationUsers”和“Users”都可以包含类型为的实例 “MyApp.Models.ApplicationUser” 这是客户机模型。我在那里添加了applicationSerid,以便有时更容易直接使用它 public class Client { public int Id
public class Client
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Phone { get; set; }
public string Email { get; set; }
// Who does this client belong to
public virtual ApplicationUser User { get; set; }
public string ApplicationUserId { get; set; }
}
我可以使用脚手架为客户端添加新的控制器和视图。它甚至构建时没有任何问题,但当我运行该站点时,我会得到每种类型的多个对象集错误
脚手架还将客户端添加到ApplicationDbContext(在IdentityModels.cs中设置)。在VS自动生成身份文件后,我没有碰过任何身份文件,所以我不认为它们有问题
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
public System.Data.Entity.DbSet<MyApp.Models.Client> Clients { get; set; }
}
public类ApplicationDbContext:IdentityDbContext
{
公共应用程序上下文()
:base(“DefaultConnection”,throwifvv1schema:false)
{
}
公共静态应用程序上下文创建()
{
返回新的ApplicationDbContext();
}
public System.Data.Entity.DbSet客户端{get;set;}
}
导致每种类型的多个对象集不受支持的原因是什么?我花了好几个小时想弄明白。谢谢。我发现了许多关于如何解决此问题的建议,它们可能适用于某些情况,但至少对于我在Visual Studio 2015中的项目而言,问题在于脚手架做得不好,在生成的控制器中,代码使用的是“ApplicationUsers”,而不是我在客户端模型中定义的“Users”我猜这是导致冲突的原因。我通过改变控制器代码解决了这个问题
ViewBag.ApplicationUserId = new SelectList(db.ApplicationUsers, "Id", "Email", client.ApplicationUserId);
到
基本上,控制器中的所有内容都应该是db.Users,而不是自动生成的db.ApplicationUsers
还要确保IdentityModels.cs中的ApplicationDbContext不包含其他用户或ApplicationUsers数据库集。他们不应该在那里。我没有这个问题,但我想VS2013的用户已经看到了这种情况。试试这些?我搜索了整个项目,没有找到定义了DbSet的其他地方,但我确实找到了问题并解决了它。我将分别添加答案。谢谢你的帮助。
ViewBag.ApplicationUserId = new SelectList(db.Users, "Id", "Email", client.ApplicationUserId);