【发布时间】:2012-03-15 17:31:56
【问题描述】:
我在我的 asp.net MVC Web 应用程序中使用两种方法删除一些对象和行:第一种方法包括删除实体框架对象,例如:
public void DeleteMyObject(MyObject a)
{
entities1.MyObject.Remove(a);
}
而第二种方法是从我的存储库方法中调用存储过程来删除数据库行,例如:
public void Deleteuserclass(string a, int u)
{
entities1.deleteuserclass(a, u);
}
调用以下存储过程:
ALTER PROCEDURE dbo.deleteuserclass
@userid nvarchar(50),
@classid int
AS
Begin
Delete from Users_Classes where UserID = @userid AND ClassID = @classid
if @@rowcount = 0
Raiserror('No record deleted',1,16)
END
使用上述两种方法中的任何一种;我是否可以确信,如果两个删除同一对象的删除请求同时到达服务器,那么只有一个请求会从数据库中删除记录,而另一个请求会收到异常(我的意思是实体框架或SQL Server 数据库在删除行时锁定行?)?
BR
【问题讨论】:
-
这不是一个锁.. 两个连接根本不可能在同一时刻删除相同的记录。一个必须在另一个之前发生。最后到达的那个会抛出异常。
标签: asp.net-mvc-3 sql-server-2008 entity-framework stored-procedures