请教三层架构中数据访问层参数问题
// tbl_invoice ->发货单对象 TransferTerrice -> 转运平台对象
// bdNum -> 票号 transferTerrice -> 转运平台
public static void AddTbl_invoiceExcel(Tbl_invoice tbl_invoice)
{
string sql = "INSERT tbl_invoice (bdNum,transferTerrice) " +
"VALUES (@bdNum,@transferTerrice)";
try
{
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@bdNum",tbl_invoice.BdNum),
new SqlParameter("@transferTerrice",tbl_invoice.TransferTerrice.Code), // FK;
};
// 执行增加数据的操作
DBHelper.ExecuteCommand(sql, para);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
想要请教的问题是:tbl_invoice带过来的转运平台对象有时为空时则报错"未将对象引用至对象的实例",在参数少的情况下我是这么解决的:
public static void AddTbl_invoiceExcel(Tbl_invoice tbl_invoice)
{
// 如果转运平台对象为空时则不插入转运平台的值
string sql;
if(tbl_invoice.TransferTerrice != null)
{
sql = "INSERT tbl_invoice (bdNum,transferTerrice) " +
"VALUES (@bdNum,@transferTerrice)";
}
else
{
sql = "INSERT tbl_invoice (bdNum) " +
"VALUES (@bdNum)";
}
try
{
// 如果转运平台对象为空时则不带转运平台参数
SqlParameter[] para;
if(tbl_invoice.TransferTerrice != null)
{
para = new SqlParameter[]
{
new SqlParameter("@bdNum",tbl_invoice.BdNum),
new SqlParameter("@transferTerrice",tbl_invoice.TransferTerrice.Code), // FK;
};
}
else
{
SqlParameter[] para = new SqlParameter[]
{
new SqlParameter("@bdNum",tbl_invoice.BdNum),
};
}
DBHelper.ExecuteCommand(sql, para);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
========== 这样在参数多的情况下,冗余代码会很多,想请教有没更好的办法控制?期待高手解答……