2

次のような SQL テーブルがあります。

テーブル

IDID列です。

そして、次のようなASP.Netプロジェクトにこのテーブルのクラスがあります。

public class Topic
    {
        public int ModuleID { get; set; }
        public string Name { get; set; }
        public string BodyHTML { get; set; }
    }

また、ストアドプロシージャがあります:

ALTER PROCEDURE [dbo].[addTopic] 
    @Topic dbo.Topic READONLY
AS
BEGIN
    insert into OnlineHelp_Topic
    select * from @Topic
END

Topicプロジェクトからオブジェクトを渡し、このストアド プロシージャを SqlHelper で実行したいと考えています。

このような多くの投稿を読み、SQL Server でを作成して、User-Defind Tableこのコードをテストします。

Topic Topic = new Topic()
            {
                BodyHTML = "test body",
                ModuleID = 1000,
                Name = "test"
            };
string constr = ConfigurationManager.ConnectionStrings["testConnection"].ConnectionString;
int rowsAffected = SqlHelper.ExecuteNonQuery(constr, "addTopic", new SqlParameter("@Topic", Topic));

しかし、このコードには次のSqlHelper.ExecuteNonQuery(...)ようなエラーがあります。

エラー

誰かがこの問題の解決策を説明できれば非常に役に立ちます。

4

2 に答える 2

1

次のようにトピック パラメータを渡してみてください。

List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@ModuleID ", topic.ModuleID ));
parameters.Add(new SqlParameter("@Name", topic.Name));
parameters.Add(new SqlParameter("@BodyHTML", topic.BodyHTML));
int rowsAffected = SqlHelper.ExecuteNonQuery(constr, "addTopic", parameters.ToArray());

また、ストアド プロシージャを変更する必要があります。

于 2016-12-09T11:24:31.043 に答える