gpt4 book ai didi

c# - 找不到存储过程(使用架构)

转载 作者:行者123 更新时间:2023-12-02 22:28:10 24 4
gpt4 key购买 nike

在我的数据库中,我有三个模式:

  1. 架构1
  2. 架构2
  3. 架构3

根据对象的功能,对象被分成每个模式,我认为这是一种很好的做事方式。反过来,除了我未修改的 model 数据库中的默认对象之外,dbo 中不会留下任何对象。

当我尝试从代码引用存储过程,同时指定其存储过程时,我收到未找到存储过程错误。当我将 CommandType 更改回文本时,代码就可以工作。

我没有代码,但它看起来像这样(写在我的脑海中,所以不要指望它能够编译):

using(DbConnection conn as new DbConnection("Conn String")
{
using(DbCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Schema1.usp_Category_MySproc @param1,@param2";
cmd.CommandType = CommandType.StoredProcedure;
conn.Open();
DbDataReader rdr = cmd.ExecuteQuery();
while(rdr.Read())
{
// DO STUFF
}
}
}

我还注意到参数必须按顺序传递,否则它们都会交换(因为我只能使用 CommandType.Normal 我还没有使用其他命令测试参数类型)。我猜参数传入的顺序并不重要,只要传入每个参数即可?

有什么想法吗?

一如既往,c# 或 vb 答案都可以接受。

注释:

  1. Windows 7 企业版上的 .Net 3.5
  2. 是的,我使用的是 DbCommand 而不是 SqlCommand
  3. 定位 Sql-Server 2005->2012

最佳答案

根据documentation ,它正在查找名为 "Schema1.usp_Category_MySproc @param1,@param2" 的存储过程,当然该过程不存在。

When you set the CommandType to StoredProcedure, you should set the CommandText property to the name of the stored procedure.

我能够使用以下代码向命令添加参数:

cmd.CommandText = "Schema1.usp_Test";
cmd.CommandType = CommandType.StoredProcedure;

var parameter = cmd.CreateParameter();

parameter.ParameterName = "@value";
parameter.DbType = DbType.Int32;
parameter.Value = 100;

cmd.Parameters.Add(parameter);

关于c# - 找不到存储过程(使用架构),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8304109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com