C# 运行查询时,实体框架列不会更改数据库

C# 运行查询时,实体框架列不会更改数据库,c#,sql,sql-server,entity-framework,entity-framework-migrations,C#,Sql,Sql Server,Entity Framework,Entity Framework Migrations,我尝试使用迁移将列的数据类型从int更改为string,并将枚举的整数值替换为string表示 我的代码: AlterColumn("dbo.Tid", "Status", c => c.String(nullable:false)); foreach (var status in Enum.GetValues(typeof(TimelisteStatus)).Cast<TimelisteStatus>()) { Sql(String.Format("UPDATE d

我尝试使用迁移将列的数据类型从int更改为string,并将枚举的整数值替换为string表示

我的代码:

AlterColumn("dbo.Tid", "Status", c => c.String(nullable:false));

foreach (var status in Enum.GetValues(typeof(TimelisteStatus)).Cast<TimelisteStatus>())
{
    Sql(String.Format("UPDATE dbo.Tid SET [Status] = '{0}' WHERE [Status] = {1}", status, status.ToString("D")));
}

如果我将这些命令复制粘贴到SQL Manager中,一切都正常,那么我的问题是:有没有办法在运行update语句之前强制ALTER TABLE命令提交

愚蠢的错误,但这里有:

foreach (var status in Enum.GetValues(typeof(TimelisteStatus)).Cast<TimelisteStatus>())
{
    Sql(String.Format("UPDATE dbo.Tid SET [Status] = '{0}' WHERE [Status] = {1}", status, status.ToString("D")));
}
而不是

UPDATE dbo.Tid SET [Status] = 'Kladd' WHERE [Status] = 10

为什么第二条语句在ManagementStudio中有效,但在迁移中无效,我真的无法回答。出现此问题的原因是,在运行Update语句之前,我将该列更改为varchar列,而10不再是整数,而是字符串“10”

诸如ALTERTABLE之类的ddl语句不需要提交。将应用程序连接到sql server的用户是否具有相应的权限?刚刚弄清楚,更新dbo.Tid SET[Status]='Kladd',其中[Status]=10需要更新dbo.Tid SET[Status]='Kladd',其中[Status]='10',出于某种原因,它在management studio中工作,但在使用迁移时不起作用。
foreach (var status in Enum.GetValues(typeof(TimelisteStatus)).Cast<TimelisteStatus>())
{
    Sql(String.Format("UPDATE dbo.Tid SET [Status] = '{0}' WHERE [Status] = '{1}'", status, status.ToString("D")));
}
UPDATE dbo.Tid SET [Status] = 'Kladd' WHERE [Status] = '10'
UPDATE dbo.Tid SET [Status] = 'Kladd' WHERE [Status] = 10