Прочитав это немного, я думаю, что понимаю, что вы пытаетесь сделать.
У вас есть Модель Сотрудника, которая имеет 0 - 1 связь с Полом, и у этого сотрудника может быть несколько контактов и несколько иждивенцев. (поправьте меня, если я ошибаюсь)
Так что ваши модели должны выглядеть следующим образом
Сотрудник
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public DateTime DOB { get; set; }
public virtual Gender gender { get; set; } // gender relationship
// allows you to pull all the contact details belonging to the employee
public virtual ICollection<EmployeeContactDetail> EmployeeContactDetails { get; set; }
// allows you to pull all the dependants belonging to the employee
public virtual ICollection<EmployeeDependent> EmployeeDependents { get; set; }
}
Пол
public class Gender
{
public int Id { get; set; }
public string IdentityTerm { get; set; }
}
Контакт сотрудника Подробно
public class EmployeeContactDetail
{
public int Id { get; set; }
public string Feild1 { get; set; }
// employee is associated to the contact detail
public virtual Employee Employee { get; set; }
}
Зависимый от сотрудника
public class EmployeeDependent
{
public int Id { get; set; }
public string Feild1 { get; set; }
// employee is associated to the dependent
public virtual Employee Employee { get; set; }
}
Когда вы go используете информацию от сотрудника, вы можете легко получить ее с помощью структуры организации
Пример 1. вернуть список записей контактных данных
public ActionResult EmployeeContacts(int employeeId)
{
ApplicationDbContext db = new ApplicationDbContext();
var employee = db.Employee.Find(employeeId);
if (employee == null)
{
return HttpNotFound();
}
// get all the employees contacts
List<EmployeeContactDetails> contactDetailsList = employee.EmployeeContactDetails.ToList();
return View(contactDetailsList); // pass the records to the view
}
Пример 2. вернуть указанную запись в представление
public ActionResult EmployeeContact(int employeeId, int contactId)
{
ApplicationDbContext db = new ApplicationDbContext();
var employee = db.Employee.Find(employeeId);
if (employee == null)
{
return HttpNotFound();
}
// get all the employees contact by id
var contactFoundById = employee.EmployeeContactDetails.Where(c => c.Id == idYourLookingFor).FirstOrDefault();
if (contactFoundById == null)
{
return HttpNotFound();
}
return View(contactFoundById); // pass the record to the view
}
Пример 3. в представлении, если в качестве модели был выбран только один сотрудник
@model project.Models.Employee
// loop through all the employees contacts
@foreach (var item in Model.EmployeeContactDetails)
{
@item.Feild1
}
// loop through all the employees EmployeeDependents
@foreach (var item in Model.EmployeeDependents)
{
@item.Feild1
}
Пример 4. Другой вид со списком контактных данных в качестве модели
@model List<project.Models.EmployeeContactDetail>
// loop through all the employees contacts
@foreach (var item in Model)
{
@item.Feild1
}
Редактировать: я добавил примеры того, как использовать структуру сущностей для передачи е Список сотрудников для просмотра. Я предлагаю изучить, как использовать структуру сущностей для передачи модели в представление и как использовать модель внутри представления. Вот небольшая статья обо всем этом.