软件包管理器在尝试不同的事情时会丢弃错误。我想在我的" Yogaspace"实体中创建一个外国密钥,以创建"应用程序用户"实体。我在线查看了多个不同的线程,以查看如何完成此操作,我认为我的代码第一代码是正确的。这是我所做的,这是在更新数据库时我在软件包管理器中遇到的错误。
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):parameter @objname是模棱两可的,或者声称的 @objtype(列)是错误的。
我正在创建没有'Yogaspace.user_id',似乎实体框架正在为我创建它。?为什么??所以我认为也许我需要将应用程序用户放入下面的上下文类中。
public DbSet<ApplicationUser> ApplicationUsers { get; set; }
我尝试了此并运行更新数据库并收到了此不同的错误消息。
不支持每个类型的多个对象集。对象集集"应用程序"one_answers"用户"都可以包含类型" Yogabandy.domainclasses.models.applicationuser"的实例。
我不确定我需要在这里做什么,但这是头痛!
这是现有架构上的初始迁移还是迁移?如果后者可能已经从上一个构建中的表上有User_Id
列,并且由于您现在添加了显式列(ApplicationUserRefId
),现在需要重命名现有列。
如果您发布迁移会有所帮助。