要将实体从数据库转换为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。