实体框架:Database.ExecuteSqlCommand方法

时间:2013-10-09 16:00:05

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

所以,我有一个基本的更新语句,我在我的MVC 4应用程序中运行。我这样称呼它(SQL Server 2008 R2,实体框架5.0):

var requestData = requestInfo.Database.ExecuteSqlCommand("UPDATE TABLE Blah.. ");

命令成功完成,但有时requestData返回1,有时返回2.我找不到任何文档或解释这些返回值的含义。我看过这里:

http://msdn.microsoft.com/en-us/library/gg679456(v=vs.103).aspx

但是,它没有给出任何明确的答案。

如果有人可以找到解释此命令返回值的链接,我将非常感激。

1 个答案:

答案 0 :(得分:16)

  

命令成功完成,但有时requestData返回   1,有时它返回2.我找不到任何文件或   解释这些返回值的含义。

ExecuteSqlCommand将返回受UPDATE声明影响的行数。


<强>测试

//Update ID 2
using (var context = new Test2Context())
{
    var items = context.MyTestClasses.Where(x => x.Id == 2).Count();
    var rowsAffected = context.Database.ExecuteSqlCommand("UPDATE MyTestClasses SET Name = 'Test2' WHERE Id = 2");
    Debug.WriteLine("--First Test--");
    Debug.WriteLine("items: {0}", items);
    Debug.WriteLine("rowsAffected: {0}", rowsAffected);
}

//Update all
using (var context = new Test2Context())
{
    var items = context.MyTestClasses.Count();
    var rowsAffected = context.Database.ExecuteSqlCommand("UPDATE MyTestClasses SET Name = 'Updated'");
    Debug.WriteLine("--Second Test--");
    Debug.WriteLine("items: {0}", items);
    Debug.WriteLine("rowsAffected: {0}", rowsAffected);
}

<强>结果:

--First Test--
items: 1
rowsAffected: 1
--Second Test--
items: 3
rowsAffected: 3