用于在不迁移的情况下使用Entity Framework添加/更改表的列的原始查询

时间:2016-05-23 09:28:46

标签: c# sql-server asp.net-mvc entity-framework

我限制访问SQL Server数据库&我必须从我的MVC项目改变表。我试过了:

var db = MyDbContext.Create();
try
{
    var res =
    db.Speakers.SqlQuery("ALTER TABLE [dbo].[Speakers] ADD [LastName] [nvarchar](256) NULL");
}
catch (Exception exception)
{
    Console.WriteLine(exception);
}

它没有抛出异常但没有更新表。我不知道Raw查询是否允许更改。但我刚试了一下。任何人都可以告诉我如何更改数据库?

2 个答案:

答案 0 :(得分:1)

  

可以使用以下命令将非查询命令发送到数据库   数据库上的 ExecuteSqlCommand 方法。例如:

using (var context = new BloggingContext()) 
{ 
    context.Database.ExecuteSqlCommand( 
        "UPDATE dbo.Blogs SET Name = 'Another Name' WHERE BlogId = 1"); 
}
     

请注意,对数据库中的数据所做的任何更改都是使用的   在加载实体之前,ExecuteSqlCommand对上下文不透明   或从数据库重新加载。

实体框架原始SQL查询 https://msdn.microsoft.com/en-gb/data/jj592907.aspx

答案 1 :(得分:1)

尝试这种方法:

    db.Database
.ExecuteSqlCommand("ALTER TABLE [dbo].[Speakers] ADD [LastName] [nvarchar](256) NULL");