我正在Visual Studio 2013中使用EF6的Code First迁移构建MVC5项目。一切工作如预期一直到现在:多个迁移将多个表添加到我的D b。添加一个应该映射到新数据库表的新类后,添加迁移将不会选择新类,并且在Up()和Down()方法中没有代码生成新的迁移文件。有问题的类很简单,因为它可以:EF6 MVC5代码优先迁移不适用于1表/类
[Table("SurveyItemOption")]
public class SurveyItemOption
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Option { get; set; }
public virtual SurveyItem SurveyItem { get; set; }
}
正如你所看到的,我已经添加了DatabaseGenerated自己的属性,看看是否有什么差别,但它仍然没有拿起新类并创建新表。 SurveyITem是父类,它的数据库表是使用Code First生成的,就像SurveyItem的父级的Survey类一样。以下是成功生成的其他代码。
public enum ListType
{
None = 0,
Circle = 1,
Square = 2,
LowerAlpha = 3,
LowerLatin = 4,
LowerRoman = 5,
UpperAlpha = 6,
UpperLatin = 7,
UpperRoman = 8
}
[Table("Survey")]
public class Survey
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Title { get; set; }
public bool IsActive { get; set; }
public string Owner_UserId { get; set; }
public int Module_Id { get; set; }
public virtual IEnumerable<SurveyItem> Items { get; set; }
}
[Table("SurveyItem")]
public class SurveyItem
{
public SurveyItem() {
this.OptionListType = ListType.None;
}
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Item { get; set; }
public int Survey_Id { get; set; }
[EnumDataType(typeof(ListType))]
public ListType OptionListType { get; set; }
public virtual int OptionListTypeId
{
get
{
return (int)this.OptionListType;
}
set
{
this.OptionListType = (ListType)value;
}
}
}
[Table("SurveyAnswer")]
public class SurveyAnswer
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string UserId { get; set; }
public string Answer { get; set; }
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Computed)]
public DateTime Created { get; set; }
public virtual SurveyItem SurveyItem { get; set; }
}
我尽可能创造一个新的项目去和进口的所有我的模型,视图和控制器从这个项目(连同各种内容的文件),建项目,并启用迁移。 SurveyItemOption类在初始迁移代码中仍然被忽略。
请帮忙!任何想法如何解决这个将非常感激!
你的Data Context类是什么样的?在那里有一个DbSet吗? –
jessehouwing
感谢您的回应!不,现在还没有DbSet。我在运行迁移之后添加了这些内容来创建新表。不过,我确实解决了这个问题。请参阅下面的答案。 – Silkster