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

时间:2014-06-25 08:35:09

标签: c# asp.net entity-framework

我正在尝试使用Entity Framework将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; }
}

2 个答案:

答案 0 :(得分:0)

确保将TrnDate值设置为值。您可以先打印出TrnDate值,或者设置一个断点来查看它的值。

将此值插入非可空日期时间字段可能会导致此异常。

答案 1 :(得分:0)

由于各种原因,您可能会收到此错误,即未从代码或输入的日期向DateTime传递正确的值(或空值)不符合为列指定的类型的日期范围。 检查从实体传递到数据库的确切值。

您可以参考以下帖子以供参考:

Stack overflow - conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value