Как вставить текст в таблицу в качестве внешнего ключа с использованием подхода «сначала код»? - PullRequest
0 голосов
/ 20 апреля 2020

Возможно, я задаю глупые вопросы, но я просто хочу прояснить свою концепцию.

Я хочу вставить данные в базу данных таким образом, чтобы, когда пользователь нажимает кнопку, введенное значение будет сохранить в другой таблице с этим конкретным идентификатором в качестве внешнего ключа.

Model.cs

public class Department  
{  
    [Key]  
    public int DepartmentId { get; set; }  

    [Required]  
    public string DepartmentName { get; set; }  
}  

public class Employee  
{  
    [Key]  
    public int EmployeeId { get; set; }  

    [Required]  
    public string EmployeeName { get; set; }  

    // Foreign key   
    [Display(Name = "Department")]  
    public virtual int DepartmentId { get; set; }  

    [ForeignKey("DepartmentId")]  
    public virtual Department Departments { get; set; }  
}

Контроллер: для сохранения значения в одной таблице:

SchoolDBEntities context = new SchoolDBEntities();
var employee = new Employee()
context.SaveChanges();

Но если я хочу вставить текст против первичный ключ, это подход?

SchoolDBEntities context = new SchoolDBEntities();
var employee = new Employee();
var dep = new Departement();
context.Departement.Add(employee);
context.SaveChanges();

Пожалуйста, помогите мне прояснить мою концепцию.

Заранее спасибо

1 Ответ

0 голосов
/ 20 апреля 2020

Неправильно, это то, как это должно быть сделано;

Добавьте свойство навигации из вашего Департамента вашим сотрудникам;

 public class Department  
{  
   [Key]  
   public int DepartmentId { get; set; }  

   [Required]  
   public string DepartmentName { get; set; } 

   // add this
   public virtual List<Employee> Employees { get; set; }
}  

Затем в контроллере при вставке нового сотрудника, Вы должны присвоить значение для DepartmentId объекта Employee.

SchoolDBEntities context= new SchoolDBEntities();

// find an existing department
var dep= context.Departments.FirstOrDefault(); 

// create employee object
var employee = new Employee();

// assign the departmentId to the employee object
employee.DepartmentId = dep.DepartmentId;

// add the employee
context.Employees.Add(employee);

// save, your employee will now belong to that Department
context.SaveChanges();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...