Если это навигационные свойства:
public List<DEPENDENTES> DEPENDENTES { get; set; }
public List<EMPRESAS> EMPRESAS { get; set; }
public List<PLANOS_MEDICO> PLANOS_MEDICO { get; set; }
Тогда (1) они должны быть virtual
и (2) они должны быть чем-то вроде IList
или ICollection
:
public virtual ICollection<DEPENDENTES> DEPENDENTES { get; set; }
public virtual ICollection<EMPRESAS> EMPRESAS { get; set; }
public virtual ICollection<PLANOS_MEDICO> PLANOS_MEDICO { get; set; }
<ч />
Хотя, кроме того, то, что вы здесь делаете, это очень странно :
inaModel.EMPRESAS = db.EMPRESAS.ToList<EMPRESAS>();
inaModel.PLANOS_MEDICO = db.PLANOS_MEDICO.ToList<PLANOS_MEDICO>();
По сути, то, что у вас есть в базе данных, для данного сотрудника (INATIVOS
) существуют отношения с определенными компаниями (EMPRESAS
) и определенными медицинскими планами (PLANOS_MEDICO
). Но вы игнорируете все, что находится в этих данных, и заменяете их всеми компаниями и всеми медицинскими планами во всей базе данных .
Таким образом, каждый раз, когда вы используете это действие контроллера для получения существующей записи о сотруднике, создается впечатление, что у сотрудника есть каждая компания и каждый медицинский план. Хотя это не то, что в базе данных. Я сильно подозреваю, что это не то, что вы хотите.
<ч />
ОБНОВЛЕНИЕ: Судя по комментариям к этому ответу, похоже, что это не свойства навигации. Они даже не свойства модели вообще. Это просто списки данных, необходимых для представления (предположительно) <select>
элементов.
Если они не являются частью модели данных, удалите их из модели. Вместо этого рассмотрите возможность использования модели представления. Например:
public class InativosViewModel
{
public INATIVOS Inativos { get; set; }
public List<EMPRESAS> EMPRESAS { get; set; }
public List<PLANOS_MEDICO> PLANOS_MEDICO { get; set; }
}
Затем в контроллер возвращают экземпляр модели представления, который является составным объектом модели, и данные, необходимые для представления:
public ActionResult Index(int? id)
{
InativosViewModel result = new InativosViewModel();
using (Entidades db = new Entidades())
{
if (id != null)
{
result.Inativos = db.INATIVOS.Where(x => x.ID == id).FirstOrDefault();
}
result.EMPRESAS = db.EMPRESAS.ToList<EMPRESAS>();
result.PLANOS_MEDICO = db.PLANOS_MEDICO.ToList<PLANOS_MEDICO>();
}
return View(result);
}
И, конечно, измените привязку модели в самом представлении, чтобы теперь ожидать и использовать экземпляр InativosViewModel
. Получающееся в результате действие POST может все еще принять экземпляр INATIVOS
, если это необходимо, или оно может также принять экземпляр InativosViewModel
. Все зависит от структуры формы и того, что публикуется для этого действия.
В качестве альтернативы , если вы хотите продолжать использовать модель INATIVOS
, все равно удалите эти списки из нее, но используйте что-то вроде ViewBag
, чтобы отправить их в представление. Примерно так:
public ActionResult Index(int? id)
{
INATIVOS inaModel = new INATIVOS();
using (Entidades db = new Entidades())
{
if (id != null)
{
inaModel = db.INATIVOS.Where(x => x.ID == id).FirstOrDefault();
}
ViewBag.Empresas = db.EMPRESAS.ToList<EMPRESAS>();
ViewBag.PlanosMedico = db.PLANOS_MEDICO.ToList<PLANOS_MEDICO>();
}
return View(inaModel);
}
Тогда, по вашему мнению, вы должны заполнить элементы <select>
оттуда:
@Html.DropDownListFor(
model => Model.COD_EMPRESA,
new SelectList(ViewBag.Empresas, "CODIGO", "DESCRICAO"),
htmlAttributes: new { @class = "form-control"
})