我有一个类CurrentPage,它有一个Page属性,它是一个枚举(int类型):
namespace App.Model.Application
{
using System.Runtime.Serialization;
/// <summary>
/// Represents user the current page of a user in the application
/// </summary>
[DataContract]
public class CurrentPage
{
/// <summary>
/// Gets or sets the unique identifier for this current page.
/// </summary>
[DataMember]
public int Id { get; set; }
/// <summary>
/// Gets or sets the description
/// </summary>
[DataMember]
public string Description { get; set; }
/// <summary>
/// Gets or sets the identifier of the current page to which the user has navigated.
/// </summary>
[DataMember]
public Page Page { get; set; }
/// <summary>
/// Gets or sets the current page as an integer; this is to support Entity Framework limitations regarding enumerations.
/// </summary>
public int PageId
{
get
{
return (int)this.Page;
}
set
{
this.Page = (Page)value;
}
}
}
}
它的映射如下:
this.Property(cp => cp.Page).IsRequired();
如果我尝试在VisualStudio中运行Add-Migration,我最终会在迁移代码
中获取此内容RenameColumn(table: "dbo.CurrentPage", name: "Page1", newName: "Page");
我不明白这个'Page1'这个名字的来源。数据库中没有Page1列。
有什么想法吗?是否可以创建Page1列,因为它以某种方式认为已经存在的Page列不适合映射到该属性?
答案 0 :(得分:0)
不是100%确定原因是什么,但我删除了PageId属性并删除了我所有的现有迁移。然后我重新启动了Visual Studio(fwiw)。运行了update-database -script,最后添加了一个新的迁移(Add-Migration MyNewMigration),这一切都重新开始了。我知道这不是一个非常令人满意的答案,但它现在正在运作。在完成所有这些操作之前,我还获得了数据库的全新副本,未触及我的模型更改。