无法使用实体框架插入数据

本文关键字:框架 插入 数据 实体 | 更新日期: 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数据类型导致值超出范围