这句话的作用是@@ RowCount> 0

era*_*zap 5 t-sql sql-server entity-framework

取自本书:"Julia Lerman - 编程实体框架"

在EF中创建新实体时:

   var contact = Contact.CreateContact(0, "Camey", "Combs", DateTime.Now, DateTime.Now);
   context.Contacts.AddObject(contact);
   context.SaveChanges(); 
Run Code Online (Sandbox Code Playgroud)

生成的sql:

   exec sp_executesql N'insert [dbo].[Contact]([FirstName], [LastName], [Title],
   [AddDate], [ModifiedDate])
   values (@0, @1, null, @2, @3)
   select [ContactID]
   from [dbo].[Contact]
   where @@ROWCOUNT > 0 and [ContactID] = scope_identity()',
   N'@0 nvarchar(50),@1 nvarchar(50),@2 datetime2(7),@3 datetime2(7)',
   @0=N'Camey',@1=N'Combs',@2='2009-08-30 09:27:31.7449098',
   @3='2009-11-30 09:27:31.7449098'
Run Code Online (Sandbox Code Playgroud)

什么是@@ RowCount> 0用于where子句?

我不确定它根据msdn做了什么它会返回受影响的行数,所以据我所知,这只是验证添加了联系人记录的一种方式,他们也可以编写@@ ROWCOUNT = 1

它是否正确 ?

Joe*_*orn 4

@@Rowcount是一个特殊的变量。它将始终保存最后一条语句更改或返回的记录数。在本例中,最后一条语句是插入。通过在 where 子句中使用@@Rowcount > 0,可以确保 select 仅在插入语句成功时匹配任何记录。

如果他们使用了@@Rowcount > 1替代方法,那么这个说法就永远不会成立。该插入语句只会插入 1 行。1 不 > 1。