簡體   English   中英

c# SQL 找不到存儲過程

[英]c# SQL Could not find stored procedure

我有這個問題,我的代碼聲明它找不到存儲過程。 執行 sproc 的代碼如下:

public class StoredProcedureProvider : IStoredProcedureProvider
{
    private readonly string _connectionString;
    public StoredProcedureProvider(IDataConfig config) => _connectionString = config.ConnectionString;

    public T ExecuteScalar<T>(string procedureName, IList<SqlParameter> parameters = null)
    {
        using (var connection = new SqlConnection(_connectionString))
        {
            using (var command = new SqlCommand(procedureName, connection))
            {
                command.CommandType = CommandType.StoredProcedure;

                if (parameters != null && parameters.Any())
                    foreach (var parameter in parameters)
                        command.Parameters.Add(parameter);

                connection.Open();
                var result = command.ExecuteScalar();

                return (T)Convert.ChangeType(result, typeof(T));
            }
        }
    }
}

我創建了一個沒有參數的測試存儲過程,並像這樣調用它:

var t = _storedProcedureProvider.ExecuteScalar<int>("sp_test");

這行得通。 下一行是這樣的:

var instructionType =
    _storedProcedureProvider.ExecuteScalar<int>(
        "generalInstructionTypeByCode", new List<SqlParameter>
        {
            new SqlParameter("@userID", SqlDbType.Int, 0),
            new SqlParameter("@code", token.Update.Instruction.TypeCode)
        });

這失敗了。 它正在嘗試執行此存儲過程:

CREATE PROCEDURE [dbo].[generalInstructionTypeByCode]
    @userID as int,
    @code as varchar(5) As
BEGIN

select * from generalInstructionTypes where shortName = @code

END

有誰知道為什么找不到它?

您應該按照以下步驟操作,我想它應該可以工作:

  1. 從解決方案資源管理器展開模型文件夾
  2. 展開.edmx 文件
  3. 右鍵單擊both.tt文件一一並select運行自定義工具
  4. 然后右鍵單擊 main.edmx 文件和 select 運行自定義工具
  5. 構建應用程序
  6. 然后檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM