【问题标题】:Need to add extra column for processing需要添加额外的列进行处理
【发布时间】:2014-02-24 06:53:12
【问题描述】:

我有一个名为 Customer 的表,

CustomerID
Name
Salary etc.

我已将 Customer 表对象添加到 dbml,现在我需要在 Customer 表列之上添加 IsProcessed 列。

我已经添加了它,但它在检索数据时抛出异常为“无效列 IsProcessed”

我是否需要创建单独的 POCO 对象并添加额外的列 稍后用 db 列表中的 POCO 对象填充新列表。

任何替代解决方案?请指教

【问题讨论】:

  • 一个简单的解决方案是从 DBML 中删除该表,然后再次拖放它。
  • 您必须删除表并再次添加到 dbml 文件中
  • 我不想刷新表,因为表没有 IsProcessed 列。我想将此额外列添加到 dbml 中的客户对象。新列仅用于通过代码处理客户对象。
  • 您可以尝试从您的客户数据表类中派生一个带有新字段的新类,并将其用于处理。

标签: c# sql linq


【解决方案1】:

您可以通过在新文件中创建部分类来扩展从 DBML 生成的类:

public partial class Customer
{
    public bool IsProcessed { get; set; }
}

将上面的代码放入新的类文件中,并将其命名空间设置为与 DBML 生成的 Customer 类相同。

这是一种常见的模式,可以扩展生成的类,而不必担心重新生成 DBML 文件时会覆盖扩展代码。

[For Reference]

【讨论】:

    【解决方案2】:

    如果模型与数据库不同步并保存 EDMX 文件并运行“从数据库更新模型...”功能不起作用,请考虑此链接

    http://blog.jongallant.com/2012/08/entity-framework-manual-update.html#.Uwrul_mSzkA

    【讨论】:

    • 我不想刷新表,因为表没有 IsProcessed 列。我想将此额外列添加到 dbml 中的客户对象。新列仅用于通过代码处理客户对象。
    • 您可能需要使用部分类扩展您的模型,请参阅此链接stackoverflow.com/questions/10281897/…
    【解决方案3】:
    public class CustomerData
    {
        public int CustomerID { get; set; }
        public string Name { get; set; }
        public double Salary { get; set; }
        public bool IsProcessed { get; set; }
    }
    

    LINQ 查询:

    List<CustomerData> GetData()
    {
      var data = from cus in context.Customer 
                 select new CustomerData{
                     CustomerID = cus.CustomerID,
                     Name = cus.Name,
                     Salary = cus.Salary
                     IsProcessed = Your custom field data
                 };
      return data.ToList();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-24
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 2011-01-18
      相关资源
      最近更新 更多