LINQ TO SQL,存储过程不会创建临时表

本文关键字:创建 临时表 存储过程 TO SQL LINQ | 更新日期: 2023-09-27 18:36:43

我正在通过Web服务编写聊天代码,运行SQL Express Server。我在Visual Studio 2010上使用C#。

我有一个应该创建一个临时表的 sproc。当我在管理工作室中执行该过程时,它会创建一个临时表。但是当我在 LINQ to SQL 上执行该过程时,它会进入该过程使一切正确,但不创建 TempTable。

这里是 SQL 代码:

    BEGIN
      SET NOCOUNT ON;
      DECLARE @SQL NVARCHAR(MAX)
      DECLARE @ResultCode INT --1 -> good; 0 -> Fail
      SELECT @ResultCode = 1
      SET @SQL = 'CREATE Table ##' + @i_Tablename + '(
                      ID INT IDENTITY(1,1) PRIMARY KEY,
          Username VARCHAR(25) NOT NULL,
          Message VARCHAR(MAX) NOT NULL,
          Font VARCHAR(100) NOT NULL,
          ForeColor INT NOT NULL,
          BGColor INT NOT NULL,
          Date DATETIME DEFAULT GETDATE())'
      EXECUTE sp_sqlexec @SQL
      INSERT INTO Chatlist VALUES(@i_Tablename)
      IF @@error <> 0
      BEGIN
        SELECT @ResultCode = 0
      END
      RETURN @ResultCode
    END

这就是我在 C# 中调用过程的方式:

DB.sp_CreateTempTable(Chatname);

正在执行的过程,结果代码是可以的,它使插入表聊天列表,但没有临时表。

LINQ TO SQL,存储过程不会创建临时表

全局临时表有两个数字符号 (##) 作为其名称的第一个字符;创建后,任何用户都可以看到这些字符;当引用该表的所有用户都与 SQL Server 实例断开连接时,它们将被删除。

我想SQL Server正在删除你的表。如果你想从其他地方引用它,你不应该让它成为临时的。