作为规划实体框架迁移的一部分,为了调试数据移动,我经常使用-Script参数来生成脚本.
然后,我可以将此脚本带到查询分析器并将其包装在事务中,以便手动测试它.
我遇到了一个需要Go语句才能正确执行脚本的情况.以下代码已添加到迁移中,以便在适当的位置输出Go.
Sql("GO");
Run Code Online (Sandbox Code Playgroud)
当使用-Script时,这会在正确的位置添加GO语句.但是当没有使用-Script时.我得到例外......
System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'GO'.
Run Code Online (Sandbox Code Playgroud)
有没有一种安全的方法可以将Go命令添加到脚本中?
所以我有一个由Entity框架进行大量迁移的应用程序.我们希望立即获取所有迁移的脚本,并且使用该-Script标记可以正常工作.
但是......它没有GO在SQL中添加语句,给我们带来了类似的问题Alter view should be the first statement in a batch file...
我一直在搜索并手动添加Sql("GO");有关此问题的帮助,但仅针对整个脚本.当我再次使用包控制台管理器时,它返回一个异常.
System.Data.SqlClient.SqlException (0x80131904): Could not find stored procedure 'GO'.
Run Code Online (Sandbox Code Playgroud)
有没有办法添加这些GO标签仅使用时-Script的标签?如果没有,对此有什么好处?
注意:我们也尝试过多个文件,但由于我们有很多迁移,所以每次都几乎无法维护.
我必须通过Entity Framework 5使用以下模型创建数据库:
public class Post
{
public int PostId { get; set; }
[MaxLength(200)]
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我添加了新的属性 Post
public string Abstract { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后我跑了
Add-Migration AddPostAbstract
Run Code Online (Sandbox Code Playgroud)
在我的Migrations文件夹中创建了以下类,之后我通过添加一个SQL语句修改了这个文件
//201308300714477_AddPostAbstract.cs
public override void Up()
{
AddColumn("dbo.Posts", "Abstract", c => c.String());
Sql("UPDATE dbo.Posts SET Abstract = LEFT(Content, 100) WHERE Abstract IS …Run Code Online (Sandbox Code Playgroud)