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.
Мой API для получения агентов по местоположению ниже: [code][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}" }); } } [/code] My class model for my agent details below: [code]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; } } } [/code] My stored procedure that returns the data below: [code]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; [/code] 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.
Я не могу понять, почему контекст моего кода EntityFramework имеет нулевой результат. Когда я пытаюсь получить список таблицы из базы данных (SQLSERVER), код выдает ошибку: «Данные имеют значение NULL. Этот метод или свойство нельзя вызвать для...
Это проект миграции. У меня есть таблица на SQL Server, содержащая данные изображения, хранящиеся как тип данных VARBINARY(MAX), позволяющая сохранять изображение как byte[] в базе данных с использованием EF Core 8. . При получении данных из базы...