我创建了名为“Allocation”的模型但是当我运行Add-Migration“Allocation for Deals”时,使用up()和down()函数打开的迁移文件在函数和表中没有任何查询不是在数据库中创建的。
我的模特是: -
class Allocation
{
[Display(Name = "ID", ResourceType = typeof(Resources.Resource))]
public int AllocationId { get; set;}
[Display(Name = "CountryID", ResourceType = typeof(Resources.Resource))]
public int CountryId { get; set; }
[Display(Name = "RightID", ResourceType = typeof(Resources.Resource))]
public int RightId { get; set; }
[Display(Name = "Amount", ResourceType = typeof(Resources.Resource))]
public double Amount { get; set; }
}
答案 0 :(得分:3)
您添加了DbContext
吗? DbSet
?
public class AllocationContext : DbContext
{
public DbSet<Allocation> Allocation { get; set; }
}
EF需要知道要生成哪些实体。
DbContext
通过查看已定义的DbSet
属性来确定要包含在模型中的类。
您可以将DbSet
行添加到现有(如果您已有)DbContext
。
另请注意,您应在[Key]
上方添加AllocationId
数据注释:
[Key]
[Display(Name = "ID", ResourceType = typeof(Resources.Resource))]
public int AllocationId { get; set;}
编辑:感谢Colin发表评论,您不必添加[Key]
注释,因为AllocationId
符合正确的Id惯例,该约定将作为密钥处理。
答案 1 :(得分:1)
在为新表添加任何迁移时,请确保还应在DbContext中添加模型类。对于前者对于分配模型,我添加了
public DbSet<Allocation> Allocation { get; set; }
在DbContext中然后我得到“不一致的可访问性”错误然后我刚刚从DbSet代码中删除了“public”关键字。现在代码变为
DbSet<Allocation> Allocation { get; set; }
现在它正常运作。