我正在使用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();
任何帮助或建议?提前致谢
由于方案2和3中使用的new
关键字,新对象创建的类型与类ORDER
不同。
从指定的动态类型创建这些对象时,不会将数据注释视为不同类型。
场景1的工作原理是对象列表仍然是ORDER
类型,因此数据注释仍然存在。