无法使用实体框架插入数据
本文关键字:框架 插入 数据 实体 | 更新日期: 2023-09-27 18:10:07
我正在尝试从ASP插入数据。Net Web API应用程序到数据库使用实体框架。但是我得到了一个异常:
An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll but was not handled in user code.
方法触发db.SaveChanges()时发生异常;下面是post方法的代码:
public HttpResponseMessage PostTransaction(Transaction transaction)
{
if (ModelState.IsValid)
{
// db.Entry(transaction).State = EntityState.Added;
db.Transactions.Add(transaction);
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
return Request.CreateResponse(HttpStatusCode.NotFound);
}
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Created, transaction);
response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = transaction }));
return response;
}
else
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
}
模型如下:
public partial class Transaction
{
public int TrnID { get; set; }
public string TrnSubject { get; set; }
public int TrnCategoryID { get; set; }
public DateTime TrnDate { get; set; }
public int TrnAccount { get; set; }
public bool TrnType { get; set; }
public decimal TrnAmount { get; set; }
}
确保TrnDate值被设置为一个值。您可以先打印出TrnDate值,或者放置一个断点来查看它的值。
此异常可能是由于在不可空的datetime字段中插入空值而引起的。
你可以得到这个错误的各种原因,即没有传递正确的值(或一个空值)到DateTime从你的代码或日期输入不适合指定的列的类型的日期范围。检查从实体传递到数据库的确切值。
你可以参考下面的文章:
堆栈溢出-将datetime2数据类型转换为datetime数据类型导致值超出范围