簡體   English   中英

無法使用Dapper運行更新語句(參數錯誤)

[英]Unable to run update statement using Dapper (parameters error)

我試圖使用Dapper更新一行,但我在更新語句中指定參數時出錯

An exception of type 'System.InvalidOperationException' occurred in IBM.Data.DB2.iSeries.dll but was not handled in user code
Additional information: Not enough parameters specified.  The command
requires 3 parameter(s), but only 0 parameter(s) exist in the
parameter collection.

Repository.cs

public void Update(Movie movie)
{
      var sql = "UPDATE myDB.movies set title=?, genre=? where Id=?";
      db.Execute(sql, new 
               {   movie.Title, 
                   movie.Genre, 
                   movie.ID 
               });
}

Movie.cs

public class Movie
{
    public int ID { get; set; }
    [Required]
    public string Title { get; set; }

    [Required]
    [Display(Name="Release Date")]
    [DisplayFormat(DataFormatString="{0:dd/MM/yyyy}", ApplyFormatInEditMode=true)]
    public DateTime ReleaseDate { get; set; }

    [Required]
    public string Genre { get; set; }
    public decimal Price { get; set; }
}

我正在使用iDB2Connection訪問IBM ISeries數據庫。

解決方法1

我所做的是命名參數,使得無論Dapper的字母順序如何,它們的順序保持不變。

public void Update(Movie movie)
{
  var sql = "UPDATE myDB.movies set title=@param1, genre=@param2 where ID=@param3";
  db.Execute(sql, new { param1 = movie.Title, param2 = movie.Genre, param3 = movie.ID });
}

如果有人知道更好的解決方案。 請在這個帖子中發帖。

只需在Repository.cs文件中嘗試這樣

public void Update(Movie movie)
{
      var sql = "UPDATE myDB.movies set title=:Title, genre=:Genre where Id=:ID";
      db.Execute(sql, new 
               {  
                  Title = movie.Title, 
                  Genre = movie.Genre, 
                  ID = movie.ID 
               });
}

暫無
暫無

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

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