У меня есть таблица с несколькими столбцами, один из которых является идентификатором FK "владельца".
В моем операторе удаления у меня есть следующий код:
public ActionResult DeleteEmailTemplate(int id = 0)
{
EmailTemplate EmailTemplate = db.EmailTemplates.Find(id);
Company _Company = SelectCompany();
if (_Company.id != EmailTemplate.CompanyID.id)
return Content("Security Error");
return Content("Passed... Do Delete stuff");
}
Это отлично работает, но мне нужно сделать это во многих местах, поэтому я попытался извлечь метод, и теперь у меня есть:
public ActionResult DeleteEmailTemplate(int id = 0)
{
EmailTemplate EmailTemplate = db.EmailTemplates.Find(id);
if (!SecurityCheck(EmailTemplate.CompanyID.id))
return Content("Security Fail");
return Content("Passed... Do Delete stuff");
}
Я думаю, что код для SecurityCheck
не имеет отношения кЯ устанавливал точки останова и знаю, что ошибка в том, что когда вызывается SecurityCheck
, EmailTemplate.CompanyID
равен Null, но ... я не могу понять, почему это Null.
В первомНапример, это Null, но в тот момент, когда я выполняю SelectCompany()
и проверяю EmailTemplate
, EmailTemplate.CompanyID
устанавливается на правильное значение, несмотря на то, что этот метод только заполняет объект _Company
и больше ничего не трогает.
Во втором примере это снова Null, но остается нулевым.
Итак, проблемы в том, что мне нужна помощь:
Я не могу понять, почему это Null дляначать с того, что база данных имеет правильный идентификатор.
Я не могу понять, почему он получает правильное значение в файлеПервый пример после запуска SelectCompany()
.
И самое главное, что мне нужно сделать, чтобы это исправить? Я предполагаю, что перепутал где-то большое, но я просто не вижу его.