我有一个使用实体框架的MVC项目。我需要在我的数据库中添加一些列。是否可以只编写一个SQL脚本来向数据库添加列,然后在我的模型中添加一些与添加的列匹配的属性?我试图在这里避免代码优先迁移。我的方法会起作用吗?如果没有,这个问题的最佳解决方案是什么?
提前致谢
答案 0 :(得分:0)
是的,当然有可能。如果您的表遵循Entity Framework命名约定,那么您所要做的就是添加新列并在适当的实体类中添加新属性,其名称与新列相同。
public class Stuff{
public int ID { get; set; }
public string Name { get; set; }
//your new column in database is named "NewColumn"
public string NewColumn { get; set; }
}
如果您不遵循此约定,则应使用Column annotation在实体类中装饰新属性,以明确告知实体框架他应该在哪里查找此属性的值。
public class Stuff{
public int ID { get; set; }
public string Name { get; set; }
//your new column
[Column("my_new_column")]
public string NewColumn { get; set; }
}
答案 1 :(得分:0)
如果要避免多次迁移,可以先添加属性,运行add-migration
命令,然后运行update-database
,然后继续为所需的任何新属性执行此操作。
当您最终达到不期望任何更改的状态时,您可以删除所有已创建的迁移,然后再次运行add-migration
命令,然后update-database
,这将创建一个具有整个数据库架构。
如果您还处于开发阶段的早期阶段,这非常有用