必须声明标量变量 - 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
});
这是我第一次体验小巧玲珑。我已阅读此处的建议,但 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
});