无法在实体框架中为ApplicationUser创建外键

时间:2015-05-05 18:11:04

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

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

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; }
}

以下是我在更新数据库时在包管理器控制台中收到的错误消息。

  

EXECUTE sp_rename @objname = N'dbo.YogaSpaces.User_Id',@ newname = N'ApplicationUserRefId',@ objtype = N'COLUMN'   System.Data.SqlClient.SqlException(0x80131904):参数@objname不明确或声明的@objtype(COLUMN)错误。

我正在创建“YogaSpaces.User_Id”,似乎Entity Framework正在为我创建它。 ??为什么??所以我想也许我需要将ApplicationUser放在我的上下文类中。

public DbSet<ApplicationUser> ApplicationUsers { get; set; }

我尝试了这个并运行了更新数据库并收到了这个不同的错误消息。

  

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

我不确定我需要在这做什么,但这很头疼!

1 个答案:

答案 0 :(得分:0)

这是初始迁移还是现有架构上的迁移?如果后者可能已经存在来自先前版本的表的User_Id列,并且因为您现在正在添加显式列(ApplicationUserRefId),则现在需要重命名现有列。 / p>

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