C# 在实体框架MVC应用程序中,是否可以在不同的数据库上运行.sql脚本

C# 在实体框架MVC应用程序中,是否可以在不同的数据库上运行.sql脚本,c#,mysql,entity-framework,asp.net-mvc-4,database-connection,C#,Mysql,Entity Framework,Asp.net Mvc 4,Database Connection,是否可能从Asp.net MVC(EF)应用程序中连接到另一个数据库,运行一些脚本,然后关闭连接 因为在我运行应用程序时,该应用程序已经连接到默认数据库。然后,我是否可以同时连接到另一个数据库(从控制器操作)一段时间,并在该数据库上运行一些脚本,然后关闭连接?为另一个数据库设置一个单独的上下文和连接字符串,并使用以下选项之一 为非实体类型编写SQL查询 可以使用数据库类上的SqlQuery方法创建返回任何类型(包括基元类型)的实例的SQL查询。例如: using (var context = n

是否可能从Asp.net MVC(EF)应用程序中连接到另一个数据库,运行一些脚本,然后关闭连接


因为在我运行应用程序时,该应用程序已经连接到默认数据库。然后,我是否可以同时连接到另一个数据库(从控制器操作)一段时间,并在该数据库上运行一些脚本,然后关闭连接?

为另一个数据库设置一个单独的上下文和连接字符串,并使用以下选项之一

为非实体类型编写SQL查询

可以使用数据库类上的SqlQuery方法创建返回任何类型(包括基元类型)的实例的SQL查询。例如:

using (var context = new BloggingContext()) 
{ 
    var blogNames = context.Database.SqlQuery<string>( 
                       "SELECT Name FROM dbo.Blogs").ToList(); 
}
using (var context = new BloggingContext()) 
{ 
    context.Database.ExecuteSqlCommand( 
        "UPDATE dbo.Blogs SET Name = 'Another Name' WHERE BlogId = 1"); 
}
请注意,在从数据库加载或重新加载实体之前,使用ExecuteSqlCommand对数据库中的数据所做的任何更改对上下文都是不透明的

输出参数


如果使用了输出参数,则在完全读取结果之前,其值将不可用。

确定。这就是我在控制器中所做的

public class AdminController : Controller
{
    public ActionResult Install()
    {
        foreach (ConnectionStringSettings c in System.Configuration.ConfigurationManager.ConnectionStrings)
        {


                //get all files from this folder except insert and mysql create scripts and then run each of them
                string script = System.IO.File.ReadAllText(@"C:\Test.sql");
                MySqlConnection conn = new MySqlConnection(c.ConnectionString);
                try
                {
                    conn.Open();
                    MySqlScript m = new MySqlScript(conn, script);
                    m.Delimiter = "$$";
                    m.Execute();
                    conn.Close();
                }
                catch { }

        }

        return View();
    }
}

对这是可能的。我该怎么做呢?阅读关于
SqlCommand
使用像EF这样的ORM来运行临时SQL查询有什么意义?除了在整个项目中使用EF之外,您还可以使用ADO.NET之类的东西。根据项目要求,我们需要一个管理员页面(mvc视图),管理员可以在其中指定连接详细信息,并单击安装,该安装应在后台运行脚本。希望这能回答您的问题我已经设置了多个上下文,但在这里我只需要在我登录到应用程序时运行脚本,还是不在实际文件中运行脚本?你能澄清它们是如何触发的吗?在问题中,你在和管理页面上说,你刚才提到,当你没有登录时,它们将被触发。是的,我已经分享了完整的代码,在我的回答中工作。那么,“除了在我们整个项目中使用EF”发生了什么?@MickyD我们想要一个类似url的东西,管理员可以在我们选择的任何数据库上输入一些脚本,即使我们没有登录。一旦登录,EF将与数据库建立连接,业务将照常进行。我的困惑是,如果我们登录,是否可以建立另一个连接,而不使用EF。对此Shyju的回答是肯定的。所以我开始尝试。阿隆的回答也有帮助。希望这能回答你的问题,但你的答案没有使用EF这就是为什么我说“除了使用EF”:)呃,你没有任何意义