从c#调用存储过程

时间:2013-12-24 08:40:20

标签: c# stored-procedures entity-framework-5

我使用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

2 个答案:

答案 0 :(得分:3)

您的存储过程有一个无限循环WHILE 1 = 1 ???删除它。

答案 1 :(得分:2)

从存储过程中删除WHILE 1=1。它进入无限循环。