【问题标题】:Entity Framework. Just added a new field to DB, new field not saving from code实体框架。刚刚向数据库添加了一个新字段,新字段未从代码中保存
【发布时间】:2014-09-10 17:16:10
【问题描述】:

我刚刚在我的表中添加了一个新字段(“潜在客户”)

除了我直接添加到数据库的新字段之外,所有字段的保存和检索工作都很好。我正在为新字段做与其他字段相同的事情

objLead = new Leads();

objLead.PhoneNumber = txtPhoneNumber.Text; //this one works
objLead.MobilePhone = txtMobilePhone.Text; //this one doesn't

Leads ins = LeadsManager.Save(objLead);

我的保存功能是..

    public static Leads Save(Leads objLead) {
        if (objLead.LeadId == 0) {

            //objLead.InsertBy = Convert.ToInt32(HttpContext.Current.User.Identity.Name);
            objLead.InsertDate = DateTime.Now;
            objLead.InsertMachineInfo = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
            DbContextHelper.DbContext.Add(objLead);
        }

        //secUser.UpdatedBy = Convert.ToInt32(HttpContext.Current.User.Identity.Name);
        objLead.UpdateMachineInfo = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
        objLead.UpdateDate = DateTime.Now;
        DbContextHelper.DbContext.SaveChanges();

        return objLead;
    }

我对 EF 还很陌生,所以我不确定我是否遗漏了一些东西。我去了 Leads 课程并添加了新属性,所以当我输入 objLead.mobilePhone 时智能感知会识别出来。我只是不知道为什么它没有保存到数据库中。感谢您的帮助!

【问题讨论】:

  • 只是好奇您使用的是哪种 EF 方法?代码优先,模型优先,数据库优先?我可能无法提供任何帮助,但你永远不知道:O
  • DB First.. 我继承了这个项目,所以我不是 100% 熟悉它。

标签: c# asp.net entity-framework webforms


【解决方案1】:

将列添加到物理数据库表后,执行以下步骤:

  1. 进入您的模型 (.edmx)
  2. 右键设计区
  3. 从数据库更新模型...
  4. 在出现的对话框中单击刷新选项卡
  5. 完成

这应该会使用添加的新列更新您之前自动生成的 poco 类。如果您遇到我认为您遇到的情况,这应该解决您的问题。

请注意,以这种方式重新生成 POCO 将删除您手动对其所做的任何更改(如果有)。

编辑:

我不确定这是否真的有效,但你可以试试。如果您直接进入创建的 POCO 类并添加具有正确数据类型的新属性,这可能会起作用。

通过从解决方案资源管理器中展开您的 .edmx 文件来查找您的 POCO 类,然后是 [modelName].tt,然后选择您的 [tableName].cs。

如果你在表格中添加了一个字符串,你可以添加:

public string NewColumnName { get; set; }

同样,我不知道走这条路是否真的有效,基于数据库刷新你的模型是你最好的选择。

【讨论】:

  • 我很犹豫要不要尝试,因为我昨天这样做了,并且几乎破坏了我的代码中的所有内容。刷新选项卡下大约有 15 个表。也没有办法回去。如果我只选择一个表,它应该只更新那个表?
  • 对不起,我认为您实际上不能将更新限制为特定对象,让我更新答案
  • 您是否对您的 POCO 课程进行任何手动更改?您不应该从模型更新中获得重大更改 - 至少我还没有经历过这样的事情。
  • 感谢您的帮助!从数据库更新模型已修复。我有一些数据类型不正确匹配的错误,但是一旦我修复了这些错误,发布的代码相同,现在它正在回写。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 2012-12-13
  • 1970-01-01
  • 2018-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多