C# 在实体框架MVC应用程序中,是否可以在不同的数据库上运行.sql脚本
是否可能从Asp.net MVC(EF)应用程序中连接到另一个数据库,运行一些脚本,然后关闭连接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
因为在我运行应用程序时,该应用程序已经连接到默认数据库。然后,我是否可以同时连接到另一个数据库(从控制器操作)一段时间,并在该数据库上运行一些脚本,然后关闭连接?为另一个数据库设置一个单独的上下文和连接字符串,并使用以下选项之一 为非实体类型编写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”:)呃,你没有任何意义