English 中文(简体)
保存变化 () 未更新
原标题:context.SaveChanges() not updating

因此,我在表格中增加了一个双边投资条约专栏,现在我需要确保由相关的Windows实体框架类模块妥善处理。

这里我添加了"顺序 - 负责人. cs"中的内容:

     //New added column...
    public virtual bool REPORT_UPLOADED
    {
        get;
        set;
    }

但文件看起来像是由某种工具自动生成的...如果是的话? 我是否应该重新运行该工具, 以便考虑到新列? 总之 。

现在我进入了执行实体的保存、更新、选择等功能的类模块 :

    public override int Save(Entities.Master.Order_Header type)
    {
        try
        {
            using (var context = new Master_Data_Container(ConfigurationManager.MasterDataConnection()))
            {
                context.Order_Header.AddObject(type);

                return context.SaveChanges();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    public override int Update(Entities.Master.Order_Header type)
    {
        try
        {
            using (var context = new Master_Data_Container(ConfigurationManager.MasterDataConnection()))
            {
                var orderHeader = context.Order_Header.First(n => n.ID == type.ID);

                orderHeader.ADR_FACT = type.ADR_FACT;
                orderHeader.ADR_RAPPORT = type.ADR_RAPPORT;                 
                orderHeader.REPORT_UPLOADED = type.REPORT_UPLOADED;
                orderHeader.STATUT = type.STATUT;
                orderHeader.TELEPHONE = type.TELEPHONE;
                orderHeader.TYPE_COMMANDE = type.TYPE_COMMANDE;
                orderHeader.TYPE_EXAMEN = type.TYPE_EXAMEN;

                return context.SaveChanges();
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

我对实体框架并不熟悉, 所以我试着模仿我为另一个在这个项目中运作良好的实体所做的一切。

SQL 剖析器追踪显示, 新的财产/列被忽略了 : ()

                        orderHeader.REPORT_UPLOADED = true;
                        orderHeader.POSTE = "WHATEVER";
                        int result = new MsDt_OrderHeader().Update(orderHeader);

有什么我漏掉的吗?

最佳回答

您不应该在自动生成的文件中添加代码。 您需要将它做成一个部分分类, 并将所有自定义代码放入另一个文件。 真正的问题听起来和 Mark 所建议的一样, 描述您概念模型映射到存储模型的元数据都没有更新 。

在视觉工作室中,右键单击.edmx 文件,并从数据库中选择“ 更新模型 ” 。 如果您正在使用 T4 模板自定义课程, 您将不得不选择模板并选择“ 运行自定义工具 ” 。

问题回答

为了更新, 您需要告诉上下文, 您在保存更改前要更新模型 : @ info: whatsthis

context.Entry(Order_Header).State = EntityState.Modified;
return context.SaveChanges();

如果您手动添加属性, 它可能没有元数据来描述如何在数据库中保存它。 我没有 EF docs 方便, 但在 Linq 到 SQL 中有一个 < code> [Column] 属性。 我想 EF 有相似的属性 。





相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...

热门标签