在这个特定的应用程序中,没有单独的数据层,数据访问代码在实体本身中。例如,考虑一个 Customer 实体,然后在定义了成员和属性的 Customer.cs 文件中,您具有加载 Customer 对象的方法,如下所示
public bool TryLoad(int customerID, out Customer customer)
{
bool success = false
try
{
//code which calls the db and fills a SqlDataReader
ReadDataFromSqlDataReader(reader);
success = true;
}
catch(Exception ex)
{
LogError();
success = false;
}
return success;
}
现在,在 ReadDataFromSqlDataReader(reader) 中,tryparse 用于将读取器中的数据加载到对象中。例如
public void ReadDataFromSqlDataReader(reader)
{
int.TryParse(reader["CustomerID"].ToString(), out this.CustomerID);
PhoneNumber.TryParse(reader["PhoneNumber"].ToString(), out this.PhoneNumber);
... similar TryParse code for all the other fields..
}
使用 TryParse 从阅读器读取所有属性是一个好习惯吗?一位开发人员告诉我,这样做是因为 TryParse 比 int.Parse 具有更好的性能。但是,当您从数据库读取的值不符合您的代码期望的值时,您不希望抛出异常吗?我的意思是在这种情况下,如果数据库中有错误的电话号码,那么也许根本不应该初始化该对象,而不是加载一个带有空电话号码的对象?