如何使数据注释与自定义实体框架查询一起使用

问题描述 投票:0回答:1

我正在使用VS 2017和EF 6.2。我有以下POCO类,我在Display属性中添加了OR_NAME属性。

public partial class ORDERS
{
    public int OR_ROWID { get; set; }
    public Nullable<int> OR_REFNO { get; set; }

    public string OR_PROD_CODE { get; set; }

    [DisplayName("Order Name")]
    public string OR_NAME { get; set; }

    public Nullable<DateTime> OR_DATE { get; set; }

    public virtual CONTACTS_BASE CONTACTS_BASE { get; set; }
    public virtual ORDER_TYPES ORDER_TYPES { get; set; }
}

我将我的DataGridView绑定到IQueryable并期望我的OR_NAME列标题文本为Order Name - 但是在某些情况下它不起作用,我想知道我做错了什么或者是否有解决方法。

以下是它工作但不起作用的场景

场景1:有效

dataGridView1.DataSource = context.ORDERS.ToList();

场景2:不起作用

 var query = from a in context.ORDERS
             select new
                    {
                         a.OR_ROWID,
                         a.OR_NAME,
                         a.OR_PROD_CODE
                    };

dataGridView1.DataSource = query.ToList();

场景3:不起作用

dataGridView1.DataSource = context.ORDERS
                                  .Select(x => new { x.OR_NAME })
                                  .ToList();

任何帮助或建议?提前致谢

c# winforms data-annotations
1个回答
3
投票

由于方案2和3中使用的new关键字,新对象创建的类型与类ORDER不同。

从指定的动态类型创建这些对象时,不会将数据注释视为不同类型。

场景1的工作原理是对象列表仍然是ORDER类型,因此数据注释仍然存在。

© www.soinside.com 2019 - 2024. All rights reserved.