【发布时间】:2013-12-24 08:40:20
【问题描述】:
我使用 Thread 创建了一个测试应用程序并调用存储过程。如果我从控制台应用程序调用存储过程,存储过程将执行,但不会将值插入测试表。我正在使用DbContext。如果我在 SQL Server Management Studio 中调用过程,则值会添加到测试表中。哪里出错了?
我的线程调用存储过程的控制台应用程序:
static void Main(string[] args)
{
ModelContext context = new ModelContext();
Thread t = new Thread(() => ThreadTestProcedure(context));
t.Start();
}
线程调用方法:
private static void ThreadTestProcedure(ModelContext сontext)
{
try
{
context.RunTestProcedure(1000, "Test")
}
catch (Exception ex)
{
}
Console.WriteLine();
Console.ReadKey();
}
我将值插入测试表的存储过程:
CREATE PROCEDURE TestProcedure
@Int1 INT,
@SrtingValue nvarchar(250)
AS
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[ASSIGNMENTS_DELETED]')
AND type in (N'U'))
BEGIN
CREATE TABLE ASSIGNMENTS_DELETED
(ID INT PRIMARY KEY (ID) identity(1,1),
Assigment int,
StringValue nvarchar(250)
)
END
WHILE 1=1
BEGIN
BEGIN TRY
BEGIN TRANSACTION
insert into ASSIGNMENTS_DELETED
select @Int1, @SrtingValue
COMMIT TRANSACTION
END TRY
BEGIN CATCH
IF XACT_STATE() <> 0
ROLLBACK TRANSACTION
RAISERROR ('it broke', 16, 1)
END CATCH
END
【问题讨论】:
-
我也是映射存储过程并调用存储过程: context.Database.ExecuteSqlCommand(string.Format("exec TestProcedure @id, @value", id, value), new SqlParameter(" id", id), new SqlParameter("value", value));但也不插入值
标签: c# stored-procedures entity-framework-5