Max*_*Max 1 c# sql-server asp.net business-objects
假设我有一个像这样的自定义类:
public class Customer
{
public int CustomerID { get; set; }
public string CompanyName { get; set; }
public string BusinessAddress { get; set; }
public string Phone { get; set; }
public int ParentID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我使用datareader从数据库创建自定义对象.例如:
while (dr.Read())
{
listCustomers.Add(new Customer(
Convert.ToInt32(dr["CustomerID"]),
Convert.ToString(dr["CompanyName"]),
Convert.ToString(dr["BusinessAddress"]),
Convert.ToString(dr["Phone"]),
Convert.ToInt32(dr["ParentID"]),
)
Run Code Online (Sandbox Code Playgroud)
ParentID在数据库中可以为null(我无法更改它).当它为null时,转换显然会失败.
我应该如何处理从数据库中检索的空值来填充我的业务对象?在我的自定义类中使用Nullable Types会不会很好?还有其他提示吗?
绝对.可空类型非常好.否则,你必须提出一些愚蠢的约定a-la"当ParentID为-1时,这意味着Customer没有父亲".可空类型强制执行"按设计":如果没有父级,ParentID则会null.
至于保护对象,请考虑使用ORM工具(例如NHibernate或BLToolkit),因为您实际上并不想花费50%的开发时间来编写SQL查询并从数据读取器填充对象