Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 必须声明标量变量-dapper和asp.net核心_C#_Asp.net Core_Dapper - Fatal编程技术网

C# 必须声明标量变量-dapper和asp.net核心

C# 必须声明标量变量-dapper和asp.net核心,c#,asp.net-core,dapper,C#,Asp.net Core,Dapper,这是我第一次衣冠楚楚的经历。我在这里读过一些建议,但似乎没有一个能解决我的问题 Must declare the scalar variable "@tranAmount". 一些人建议如果所讨论的变量为空。但是我已经检查过了,它不是空的 我希望有人能帮我指出我做错了什么 public void RunEndOfDays() { try { IEnumerable<Loan> loans

这是我第一次衣冠楚楚的经历。我在这里读过一些建议,但似乎没有一个能解决我的问题

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());

            }

        }
public void RunEndOfDays()
{
尝试
{
IEnumerable loans=null;
var currentmount=DateTime.Now.Month;//当前月份
var currentYear=DateTime.Now.Year;
使用(var conn=newsqlconnection(ConnectionString))
{
conn.Open();
贷款=conn.Query(“从贷款中选择*);
foreach(贷款中的var贷款)
{
//现在计算这个项目的利息
var利息百分比=贷款利率/100;
var interestPerDay=interestInPercentage/365;//已保存
var interestAmountPerDay=贷款金额减记*利息日;
var tranmount=loan.amountwritenoff+interestAmountPerDay;//已保存
var-tranDate=DateTime.Now.ToString(“yyyy-MM-dd-HH:MM:ss.FFF”);
var loanAccountNo=loan.loanAccountNo;
var originalloanmount=贷款。originalloanmount;
var旁白=贷款。冲销原因;
var addDailyInterest=@“插入DailyInterest(LoanAccountNo,
金额,
利息日,
兴趣日,
每天的数量,
原汁原味,
叙述,
TranDate)值(@loanAccountNo,
@金额,
@利息百分比
@兴趣日,
@每日利息数,
@原汁原味,
@叙述,
@"日期";;
//conn.Open();
控制执行(增加每日利息、贷款);
}
}
}
捕获(例外情况除外)
{
Console.WriteLine(“错误:+ex.ToString());
}
}

谢谢

您的
贷款
类中不存在属性
transamount
(您正在将其传递到插入查询中)

conn.Execute(添加每日利息、贷款)

这实际上会将您刚才查询的列表传递回insert查询,从而导致您看到的异常

您应该创建一个与@params匹配的新匿名对象,如下所示:

conn.Execute(addDailyInterest,
新{
loanAccountNo,
金额,
利息百分比,
等
});