ExecuteSqlCommand可以在另一个上下文中访问表吗?

时间:2019-01-18 17:33:33

标签: sql sql-server .net-core

我建立了一个查询,该查询涉及联接存在于独立数据库中的2个表。我想在我的.NET Core 2.1应用程序中运行此查询。这是我所拥有的:

查询:

INSERT INTO Database2.dbo.Table2
SELECT * FROM Table1
    WHERE Col1 = 5

此查询在SQL Operations Studio中正常工作。

C#:

using(var context = ConnectionHelper.getContext(dbInfo))
{
    string MySQLQuery = 
        " INSERT INTO Database2.dbo.Table2 " +
        " SELECT * FROM Table1 " +
        "     WHERE Col1 = 5 ";
    try 
    {
        context.Database.ExecuteSqlCommand(MySQLQuery);
    } 
    catch(Exception e)
    {
        Console.WriteLine(e.Message); // This doesn't get called, the query doesn't throw an error.
    }
}

当我通过.NET Core运行查询时,没有任何反应。我期望将约1000行写入Database2.dbo.Table2,但写入0。没有记录错误消息,因此.NET Core似乎认为它已成功执行了给定的SQL查询。我假设错误是由于我对Database2的引用引起的。

1 个答案:

答案 0 :(得分:1)

该问题的解决方案是避免在给定的上下文中使用update.packages() 。由于我对此查询不需要特别的EF功能,因此我最终使用了ExecuteSqlCommand库中的SqlCommand.ExecuteNonQuery()。这是一个工作示例:

System.Data.SqlClient