包管理器在尝试不同的事情时会抛出错误。我想在我的'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'类型的实例。
我不确定我需要在这做什么,但这很头疼!
答案 0 :(得分:0)
这是初始迁移还是现有架构上的迁移?如果后者可能已经存在来自先前版本的表的User_Id
列,并且因为您现在正在添加显式列(ApplicationUserRefId
),则现在需要重命名现有列。 / p>
如果您发布了迁移,这将有所帮助。