可以避免使用ColumnAttribute吗?

时间:2019-05-28 13:08:41

标签: c# linq

要将实体从数据库转换为POCO,我使用DataContext.Translate<T>中的System.Collections.Generic方法。 在不使用TableAttribute的情况下,它可以正常工作,因为我在POCO中命名了属性,就像表的列一样。 但是,一旦在TableAttribute中使用POCO,所有属性将为空。为避免这种情况,我还需要使用ColumnAttribute。 这些属性的命名方式类似于列,但POCO的命名方式却与表不同。 如何避免使用ColumnAttribute

不使用Attribute就像魅力。 数据库中的许多表都被错误命名(其中有_或空格),我不希望我的POCO拥有像表这样的名称。因此,我将它们重命名,并假设使用Name的{​​{1}}属性可以解决问题。 但是,可悲的是,事实并非如此。 当我使用TableAttribute时,我也必须同时使用TableAttribute

ColumnAttribute

当我这样使用它时,以下内容将给我填充数据的对象(假设列名和属性名相等):

public class Foo
{
    public string Bar { get; set; }
    public int Duh { get; set; }
    public DateTime BoohTime { get; set; }
}

在这里,我收到一个结果,该结果具有正确的元素计数,但每个属性均为空。

 DataContext dc = new DataContext(sqlConnection);
 var result = dc.Translate<Foo>(dataReader);

这给了我一个结果,只有属性 [Table(Name = "tbl_Foo")] public class Foo { public string Bar { get; set; } public int Duh { get; set; } public DateTime BoohTime { get; set; } } 有数据。

Bar

我希望在 [Table(Name = "tbl_Foo")] public class Foo { [Column(Name = "Bar")] public string Bar { get; set; } public int Duh { get; set; } public DateTime BoohTime { get; set; } } 中使用Name属性会为我提供带有数据的对象,但实际上我得到的元素中每个属性均为null。

0 个答案:

没有答案