C# Can';t在实体框架中为ApplicationUser创建外键

C# Can';t在实体框架中为ApplicationUser创建外键,c#,asp.net-mvc,entity-framework,asp.net-identity,C#,Asp.net Mvc,Entity Framework,Asp.net Identity,包管理器在尝试不同的操作时抛出错误。我想在我的“YogaSpace”实体中创建“ApplicationUser”实体的外键。我已经在线查看了多个不同的线程,以了解如何实现这一点,我认为我的代码优先代码是正确的。这是我所做的,这是我在更新数据库时在PackageManager中遇到的错误 public class YogaSpace { public int YogaSpaceId { get; set; } //other members left out to save spa

包管理器在尝试不同的操作时抛出错误。我想在我的“YogaSpace”实体中创建“ApplicationUser”实体的外键。我已经在线查看了多个不同的线程,以了解如何实现这一点,我认为我的代码优先代码是正确的。这是我所做的,这是我在更新数据库时在PackageManager中遇到的错误

public class YogaSpace
{
    public int YogaSpaceId { get; set; }
    //other members left out to save space
    [MaxLength(128)]
    public string ApplicationUserRefId { get; set; }
    [ForeignKey("ApplicationUserRefId")]
    public virtual ApplicationUser ApplicationUser { get; set; }
}

 public class ApplicationUser : IdentityUser
{
    //other members left out to save space
    public virtual ICollection<YogaSpace> YogaSpaces { get; set; }
}
公共级酸奶面
{
public int-Aspaceid{get;set;}
//为了节省空间,其他成员被遗漏了
[MaxLength(128)]
公共字符串ApplicationUserRefId{get;set;}
[外键(“ApplicationUserRefId”)]
公共虚拟应用程序用户应用程序用户{get;set;}
}
公共类应用程序用户:IdentityUser
{
//为了节省空间,其他成员被遗漏了
公共虚拟ICollection酸奶面{get;set;}
}
下面是更新数据库时在PackageManager控制台中收到的错误消息

public class YogaSpace
{
    public int YogaSpaceId { get; set; }
    //other members left out to save space
    [MaxLength(128)]
    public string ApplicationUserRefId { get; set; }
    [ForeignKey("ApplicationUserRefId")]
    public virtual ApplicationUser ApplicationUser { get; set; }
}

 public class ApplicationUser : IdentityUser
{
    //other members left out to save space
    public virtual ICollection<YogaSpace> YogaSpaces { get; set; }
}
执行sp_rename@objname=N'dbo.YogaSpaces.User_Id',@newname=N'ApplicationUserRefId',@objtype=N'COLUMN' System.Data.SqlClient.SqlException(0x80131904):参数@objname不明确或声明的@objtype(列)错误

我没有创建“YogaSpaces.User_Id”,似乎是实体框架为我创建的??为什么?所以我想也许我需要把ApplicationUser放在下面的上下文类中

public DbSet<ApplicationUser> ApplicationUsers { get; set; }
公共数据库集应用程序用户{get;set;}
我尝试了这个,运行了更新数据库,收到了这个不同的错误消息

不支持每种类型有多个对象集。对象集“ApplicationUsers”和“Users”都可以包含“YogaBandy.DomainClasses.Models.ApplicationUser”类型的实例


我不知道我需要在这里做什么,但这是一个头痛

这是初始迁移还是现有架构上的迁移?如果是后者,则表上可能已经有来自上一版本的
User\u Id
列,并且由于您现在添加的是显式列(
ApplicationUserRefId
),因此现在需要重命名现有列


如果您发布迁移,这将有所帮助。

EF正在尝试应用将用户Id重命名为ApplicationUserRefId的迁移。你做了一个糟糕的操作,把为下一次迁移保留的db模型EF搞砸了。我认为这不是最初的迁移。我已经完成了EnableMigrations-initialMigration调用并创建了数据库。但是看表,我没有看到用户Id。我可以删除数据库并重新开始,这只是一个测试项目??不发布迁移文件,因为它很长。我查看了它,没有看到任何用户Id列。如果您所做的只是将
ApplicationUser
添加为外键/导航属性,并且这不是初始迁移,那么迁移应该不会那么长。听起来你可能在什么地方把事情搞糟了,所以我同意删除数据库然后重新开始是你最好的选择。