必须声明标量变量 - dapper with asp.net core

Must declare the scalar variable - dapper with asp.net core

这是我第一次体验小巧玲珑。我已阅读此处的建议,但 none 似乎解决了我的问题。

Must declare the scalar variable "@tranAmount".

有人建议,如果有问题的变量为空。但是我已经检查过了,它不是空的。

我希望有人能帮助指出我做错了什么。

public void RunEndOfDays()
        {
            try
            {
                IEnumerable<Loan> loans = null;
                var currentMonth = DateTime.Now.Month; //current month
                var currentYear = DateTime.Now.Year;

                using (var conn = new SqlConnection(ConnectionString))
                {
                    conn.Open();

                    loans = conn.Query<Loan>("Select * from Loan");

                    foreach (var loan in loans)
                    {
                        //now calculate the interest for this item
                        var interestInPercentage = loan.InterestRate / 100;
                        var interestPerDay = interestInPercentage / 365; //saved
                        var interestAmountPerDay = loan.AmountWrittenOff * interestPerDay;
                        var tranAmount = loan.AmountWrittenOff + interestAmountPerDay;//saved
                        var tranDate = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.FFF");
                        var loanAccountNo = loan.LoanAccountNo;
                        var originalLoanAmount = loan.OriginalLoanAmount;
                        var narration = loan.WrittenOffReason;


                        var addDailyInterest = @"INSERT INTO DailyInterest(LoanAccountNo,
                                                                        TranAmount,
                                                                        InterestRatePerDay,
                                                                        interestPerDay,
                                                                        AmountPerDay,
                                                                        OriginalLoanAmount,
                                                                        Narration,
                                                                        TranDate) VALUES(@loanAccountNo,
                                                                                         @tranAmount,
                                                                                         @interestInPercentage
                                                                                         @interestPerDay,
                                                                                         @interestAmountPerDay,
                                                                                         @originalLoanAmount,
                                                                                         @narration,
                                                                                         @tranDate)";
                        //conn.Open();
                        conn.Execute(addDailyInterest, loans);

                    }

                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.ToString());

            }

        }

谢谢

属性 tranAmount 在您的 Loan class 中不存在(您正在传递到插入查询中)。

conn.Execute(addDailyInterest, loans);

这实际上将您刚刚查询的列表传递回插入查询,导致您看到的异常。

您应该像这样创建一个匹配 @ 参数的新匿名对象:

conn.Execute(addDailyInterest, new { loanAccountNo, tranAmount , interestInPercentage, ...etc });