【问题标题】:Saving changes/updating existing object in dataset with Entity FrameWork and not have to set each property individually使用实体框架保存更改/更新数据集中的现有对象,而不必单独设置每个属性
【发布时间】:2020-01-17 09:37:39
【问题描述】:

我可以在不必显式设置对象的每个属性的情况下执行以下操作(不起作用)吗? Product 是默认模型绑定器从表单提交中创建的对象,ProductInDb 是我希望覆盖/更新的上下文/数据库中的对象。两者的 ProductID 主键相同。

var ProductInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID);

ProductInDb = product;

context.SaveChanges();

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 entity-framework linq-to-entities entity-framework-4.1


    【解决方案1】:

    您可以附加现有的product,并将其状态设置为Modified

    如果您使用的是DbContext API

    context.Products.Attach(product);
    context.Entry(product).State = EntityState.Modified;
    
    context.SaveChanges();
    

    对于ObjectContext

    context.Products.Attach(product);
    context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified);
    
    context.SaveChanges();
    

    【讨论】:

    • 不包含“条目”的定义。我需要参考什么吗?已经在使用 System.Data.Objects;还有什么 ?按 ctrl + 。没有为条目提供任何内容。
    • @LaserBeak 看起来您正在使用ObjectContext。请参阅我的更新答案。
    • @Eranga 请看我的以下问题:stackoverflow.com/questions/16085654/…
    • @Eranga 我尝试了同样的事情,但是当我编辑一个已经存在的实体时,数据库中出现了唯一性违规错误。也许你的语法会帮助我。
    猜你喜欢
    • 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
    相关资源
    最近更新 更多