2014-06-25 45 views
-1

我正尝试使用实体框架将数据从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; } 
} 
+1

错误消息是什么做,如果你调试你?什么是不更新的原因? –

+0

你不是想编辑已有的项目吗?如果是,那么你应该在实际更新之前调用** Attach **。 –

+0

我试图插入新项目 – MohamedAbbas

回答

0

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

此异常可能是由于将空值插入到不可空的日期时间字段中造成的。