参数超出EF中的db.SaveChanges()的范围
本文关键字:范围 SaveChanges db EF 中的 参数 | 更新日期: 2023-09-27 18:06:07
我正在开发一个MVC应用程序与实体框架。我使用数据库第一方法,在我的数据库中有一个数字字段为:
[N15] NUMERIC (1, 1) NULL,
我得到错误的代码是:
public ActionResult allsave(VchrViewModel v)
{
List<TrD> chklist = this.dt;
if (br.vchrbalance(chklist) == true)
{
trm = v.master;
trm.S100 = vt;
var n = db.TrMs.Max(x => x.N100);
trm.N100 = n + 1;
trm.S104 = getmonth(trm.D1.ToString());
trm.S103 = getyear(trm.D1.ToString());
db.TrMs.Add(trm);
db.SaveChanges();
seid = 0;
var s = this.dt;
foreach (TrD trd in s)
{
trd.S100 = vt;
var d = db.TrDs.Max(x => x.N100);
trd.N100 = d + 1;
trd.N101 = v.master.N100;
db.TrDs.Add(trd);
db.SaveChanges();
TrnYes4MST(trd.S1);
}
return Json(new { msg = "Y" });
}
else
{
return Json(new { msg = "N" });
}
}
我从视图中获取两个不同表的记录。我已经成功地保存了第一个名为"TrM"的表中的记录,它没有N15的值。但是在表"TrD"的foreach循环中,对于第一次迭代,N15 = 1。但是在db.SaveCHanges()方法上,我得到了以下错误:
Parameter {1.0} is out of range
我已经重新生成了我的edmx文件,但仍然无法解析。
要存储1.0,您需要将数字声明为
[N15] NUMERIC (2, 1) NULL,
或者干脆不声明精度
见:https://msdn.microsoft.com/en-AU/library/ms187746.aspx
问题出在EDMX。只有数据库的变化不能使它工作。由于EDMX不会随着数据库的更改而更新自己,因此每次提交数据库更改后,都必须从Visual Studio更新EDMX。
我在SQL Server中更新了我的表的设计,然后更新了EDMX。之后,我为我的模型运行自定义工具。tt文件…而且成功了!!