Исключение: данные имеют значение NULL. Этот метод или свойство нельзя вызвать для значений NULL.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Гость
 Исключение: данные имеют значение NULL. Этот метод или свойство нельзя вызвать для значений NULL.

Сообщение Гость »


Мой API для получения агентов по местоположению ниже:

Код: Выделить всё

[HttpGet("AgentsByLocation")]
public IActionResult GetAgentsByLocation(string type, string code)
{
try
{
var agents = _context.SP_GET_AGENT
.FromSqlRaw("EXECUTE dbo.SP_GET_AGENT_BY_LOCATION @type, @code",
new SqlParameter("@type", type),
new SqlParameter("@code", code))
.ToList();

// Check for null values before returning the result
agents = agents.Where(a => a != null).ToList();

return Ok(agents);
}
catch (Exception ex)
{
_logger.LogError(ex, "An error occurred while retrieving agents by location.");
return StatusCode(500, new { Message = $"An error occurred while retrieving agents by location.                  Exception: {ex.Message}" });
}
}
My class model for my agent details below:

Код: Выделить всё

public class SP_GET_AGENT
{

[Key]
public string? AGENT_CODE { get; set; }
public string? ROLE { get; set; }
public string? AGENT_NAME { get; set; }
public string? ManagerName { get; set; }
public string? MANAGER_EMAIL { get; set; }
public string? EMAIL { get; set; }
public int? IS_BD { get; set; }
public int? IS_EXITED { get; set; }
public string? TEAM_NAME { get; set; }
public DateTime? DATE_CREATED { get; set; }
public DateTime? DATE_EXITED { get; set; }
public string? BRANCH_NAME { get; set; }
public string? BRANCH_CODE { get; set; }
public string? STATE_NAME { get; set; }
public string? ZONE_CODE { get; set; }
public string? ZonalHeadQuarter { get; set; }
public string? Directorate { get; set; }
public int? DIRECTORATE_CODE { get; set; }
public int? ROLE_ID { get; set; }
public string? AGENT_TYPE { get; set; }
public int? GOAL_ID { get; set; }
public string? MOBILE_NUMBER { get; set; }
public string? POSTED_BY { get; set; }
public string? APPROVED_BY { get; set; }
public string? TERMINATED_BY { get; set; }
public string? TERMINATED_APPROVED_BY { get; set; }
public DateOnly? APPROVED_DATE { get; set; }
}
}
My stored procedure that returns the data below:

Код: Выделить всё

ALTER PROCEDURE \[dbo\].\[SP_GET_AGENT_BY_LOCATION\]
@type VARCHAR(20),
@code VARCHAR(20)
AS
BEGIN
SELECT
A.AGENT_CODE,
R.NAME AS ROLE,
A.AGENT_NAME,
M.ManagerName,
AM.EMAIL AS MANAGER_EMAIL,
A.EMAIL,
A.IS_BD,
A.IS_EXITED,
T.NAME AS TEAM_NAME,
A.DATE_CREATED,
A.DATE_EXITED,
B.\[DESCRIPTION\] AS BRANCH_NAME,
A.BRANCH_CODE,
S.\[DESCRIPTION\] AS STATE_NAME,
A.ZONE_CODE,
Z.ZonalHeadQuarter,
D.Directorate,
A.DIRECTORATE_CODE,
A.ROLE_ID,
A.AGENT_TYPE,
A.GOAL_ID,
A.MOBILE_NUMBER,
A.POSTED_BY,
A.APPROVED_BY,
A.TERMINATED_BY,
A.TERMINATED_APPROVED_BY,
A.APPROVED_DATE
FROM
\[ACCOUNT_MAPPING\].\[dbo\].\[AGENTS\] A
LEFT JOIN PPL_Directorate D ON A.DIRECTORATE_CODE = D.DirectorateId
LEFT JOIN PPL_ZONE Z ON A.ZONE_CODE = Z.ZoneId
LEFT JOIN STATES S ON A.STATS_CODE = S.CODE
LEFT JOIN BRANCH B ON A.BRANCH_CODE = B.CODE
LEFT JOIN AGENT_TEAM T ON A.TEAM_CODE = T.ID
LEFT JOIN MANAGERS M ON A.MANAGER_CODE = M.ManagerCode
LEFT JOIN AGENTS AM ON AM.MANAGER_CODE = M.ManagerCode
LEFT JOIN ROLES R ON A.ROLE_ID = R.ROLE_ID
WHERE
(@type = 'Branch' AND A.BRANCH_CODE = @code) OR
(@type = 'Zone' AND A.ZONE_CODE = @code) OR
(@type = 'Directorate' AND A.DIRECTORATE_CODE = @code);
END;
My API takes type as input and code to return agent details based on either branch, zone, or directorate, I have two directorates north & south with id 1 & 2. the 2 works fine but when I use 1 in my API I get Data is Null. This method or property cannot be called on Null values. and my class model accepts nullable. I have tested my branch type and zone type and they work just fine. Even the directorate where code is = 2 returns my data but when it is = 1 it returns the error mentioned earlier. Please help, thank you.


Источник: https://stackoverflow.com/questions/781 ... ull-values
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»