【问题标题】:Can add a new record to db table but cant update?可以向数据库表添加新记录但无法更新?
【发布时间】:2014-08-06 09:02:18
【问题描述】:

使用 MVC 4 创建 Web 应用程序。已使用以下方法将新记录添加到数据库表中:

Bicycle_Order bicycle_order = order_VM.Order;

BuyABicycle_Entities db1 = new BuyABicycle_Entities();

BicycleOrder NewOrder = new BicycleOrder();
//populate the rest of NewOrder

db1.AddEntity(NewOrder);

db1.SaveChanges();

这很好用,但是我找不到正确的选项来允许我更新现有记录。到目前为止,我已经尝试了以下示例,但无法使其正常工作:

if (_bik.Shipped != bik.Shipped)
{
_bik.Shipped = bik.Shipped;

//UPDATE _bik
//db1.HasChanges(_bik);
//db1.EntityChanged(_bik).State = EntityState.Modified;
//db1.Entry(_bik).State = System.Data.Entity.EntityState.Modified; ;
}
}

db1.SaveChanges();

我一直在网上寻找,但找不到解决办法。请指教我做错了什么

http://stackoverflow.com/questions/20894748/asp-net-mvc4-update-database-where-id-given

更新 纯属偶然,我注意到我不需要像 db1.SaveChanges(); 那样做任何形式的 db1.Update(_bik);无论如何都会保存更改。这个对吗?不应该有某种形式的手动更新吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 razor entity-framework-4


    【解决方案1】:

    通常,当您遇到更新错误时,可能是几件事。检查您的数据类型,确保不可为空的值不为空,还要确保如果您设置了任何关系,您没有丢失任何必需的 ID 或参数。如果您可以提供错误或堆栈跟踪,我可以提供更多帮助。

    【讨论】:

    • 我不确定这些错误,因为我不确定我打算在 db1 之后使用远程感知中的哪个扩展...为了更新对 _bik 的更改,但由于某种原因我不需要到,db1.SaveChanges() 将其全部保存...这是新的吗?我2天前才下载了mvc4。这一定是它的更新?
    • 是的,mvc 有一些变化。断点在 mvc 中仍然有效将您的代码放在 try catch 语句中,或者使用 Response.write(Ex.message) return null;或者在 catch 上放置一个断点以接收有关实体验证错误的更详细信息。在开始使用我自己的新版本时,我必须做一些研究。
    • 您是否尝试过从模型生成控制器和视图?这将自动避免此类问题,因为 Visual Studio 会为您编写代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多