gpt4 book ai didi

scaffolding - 适用于ApplicationUser模型的VS 2013 Controller 脚手架失败(不支持每种类型的多个对象集)

转载 作者:行者123 更新时间:2023-12-03 12:22:44 27 4
gpt4 key购买 nike

在带有EF 6的VS 2013 RTM,MVC 5项目中,我尝试搭建基于ApplicationUser的 Controller (默认情况下具有个人帐户身份验证)。 ApplicationUserIdentityUser都映射到Users表。
向导打开上下文文件进行编辑,并尝试为ApplicationUser(ApplicationUsers)添加新的数据库集,然后失败,并显示以下错误:
Unable to retrieve metadata for ApplicationUser. Multiple object sets per type are not supported. The object sets ApplicationUsers and Users can both contain instances of type ApplicationUser该解决方案没有对ApplicationUsers的引用或实例。

这是一个已知的问题?可以使用带有选项的命令行(来自PMC)运行脚手架吗?
注意:如果我指定引用ApplicationUser的模型,则脚手架还会向上下文类中添加一个额外的数据库集(如果我删除它并在生成 Controller 中修复引用,则该应用程序可以工作)。

最佳答案

哇。我真的很惊讶,没有人真正了解这个问题的根源,相反,他们只是推荐解决方法。
IdentityDbContext已经包含一个属性:

`public virtual IDbSet<TUser> Users { get; set; }

当您将 IdentityDbContext子类化以创建自己的特定于应用程序的上下文时,必须指定满足 TUser泛型的类。默认值为:
public ApplicationDbContext : IdentityDbContext<ApplicationUser>

这意味着您在功能上已经具有通过继承的形式的属性:
public IDbSet<ApplicationUser> Users { get; set; }

如果然后将另一个属性添加到特定于应用程序的上下文中,例如:
public DbSet<ApplicationUser> ApplicationUsers { get; set; }

现在,您具有由两个 DbSet跟踪的相同实体,并且收到该错误。解决方案?只需不为 DbSet添加自己的 ApplicationUser即可。无需重命名或覆盖任何内容。

关于scaffolding - 适用于ApplicationUser模型的VS 2013 Controller 脚手架失败(不支持每种类型的多个对象集),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19888576/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com