2014-12-01 176 views
1

如何正确保存到数据库?我有以下但不工作。我正在使用自定义ModelMetadataORDERMetadata)并将其设置为等于.edmx/order.cs模型并尝试保存它。MVC保存到数据库

Order.cs模型的关键字段是[OrderID],但我通过了[model.Order_Number]这是唯一的值。我目前没有通过[OrderID]ORDERMetadata模式。这是必需的吗?

Order.cs

public partial class ORDER 
{ 
    public int OrderID { get; set; } 
    public int Order_Number { get; set; } 
    public string Order_Type { get; set; } 
} 

ORDERMetadata模型:

[MetadataType(typeof(ORDERMetadata))] 
public partial class ORDER 
{ 
    // Blank. It's just here to add the class-level attribute. 
} 

public class ORDERMetadata 
{ 
    [Display(Name = "Order Number")] 
    public int Order_Number { get; set; } 
    [Display(Name = "Order Type")] 
    public string Order_Type { get; set; } 
} 

控制器:

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Edit(ORDERMetadata model) 
{ 
    if (!ModelState.IsValid) 
    { 
     return View(model); 
    } 

    try 
    { 
     // update order 
     ORDER order = new ORDER(); 
     order.Order_Number = model.Order_Number; 

     order.Order_Type = model.Order_Type; 

     db.Entry(order).State = EntityState.Modified; 
     db.SaveChanges(); 

     ViewBag.UpdateResult = "Order updated!"; 
     return View(); 
    } 
} 
+3

更新时应该使用现有实体,但是要创建一个新实体 – 2014-12-01 21:30:19

回答

0

更改为:

ORDER顺序= db.ORDERS.SingleOrDefault( p => p.Order_Number == model.Order_Number);