Я использую C # .Net и последнюю версию Dapper.Я только начал получать исключение нулевой ссылки, когда Dapper читает запись из базы данных, но поле, которое он пытается получить, является нулевым.Что я могу с этим поделать?
Далее следует то, что я считаю подходящим кодом:
using (DapperInit.conn)
{
try
{
ProjectRollup projectRollup = new ProjectRollup();
// get the Jobs in this Project
string sql = "select JobID, JobName, TaxRate, ScheduledStart from [Jobs] where ProjectID = @ProjectID";
IEnumerable<JobForRollup> jobs = DapperInit.conn.Query<JobForRollup>(sql, new { ProjectID = projID });
// get the Discount rate for the project
sql = "select Discount from [Projects] where ProjectID = @ProjectID";
projectRollup.Discount = DapperInit.conn.Query<int>(sql, new { ProjectID = projID }).FirstOrDefault();
Вот как выглядит класс ProjectRollup
(если это имеет значение):
public class WorkItemForRollup
{
public Guid TaskID { get; set; }
public string Description { get; set; }
public bool Taxable { get; set; }
public decimal Price { get; set; }
public DateTime ScheduledDate { get; set; }
}
public class JobForRollup
{
public Guid JobID { get; set; }
public string JobName { get; set; }
public decimal TaxRate { get; set; }
public decimal Price { get; set; }
public DateTime ScheduledStart { get; set; }
public List<WorkItemForRollup> WorkItems { get; set; } = new List<WorkItemForRollup>();
}
public class ProjectRollup
{
public decimal Total { get; set; }
public int Discount { get; set; }
public List<JobForRollup> Jobs { get; set; } = new List<JobForRollup>();
}
Я успешно получаю данные jobs
от Dapper, и есть запись, такая что мой ProjectID = projID
, но поле Скидка оказывается пустым.Что я могу сделать, чтобы предотвратить исключение нулевой ссылки, потому что Discount является пустым полем?(Кстати, не имеет значения, если я объявлю Discount равным int?
- я все равно получу исключение.)