【发布时间】:2014-01-20 16:17:40
【问题描述】:
我正在 Visual Studio 2013 中使用 Code First 迁移和 EF6 构建一个 MVC5 项目。到目前为止,一切都按预期工作:多次迁移将多个表添加到我的数据库中。添加一个应该映射到新数据库表的新类后,add-migration 不会选择新类,并且会生成新的迁移文件,并且在 Up() 和 Down() 方法中没有代码。有问题的类尽可能简单:
[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 是父类,它的 db 表是使用 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 类在初始迁移代码中仍然被忽略。
请帮忙!任何有关如何解决此问题的想法将不胜感激!
【问题讨论】:
-
您的数据上下文类是什么样的?那里有
DbSet<SurveyItemOption>吗? -
感谢您的回复!不,还没有它的 DbSet。在运行迁移以创建新表后,我一直在添加这些。不过,我确实解决了这个问题。请参阅下面的答案。
标签: c# sql-server-2008 ef-code-first visual-studio-2013