Sono principiante di Entity Framework. Voglio inserire i dipendenti insieme al reparto come chiave esterna, ma sto riscontrando il seguente errore durante l'aggiunta di record:
L'istruzione INSERT era in conflitto con il vincolo FOREIGN KEY \ "FK_dbo.Employees_dbo.Departments_DepartmentId \". Il conflitto si è verificato nel database \ "EmpDB \", nella tabella \ "dbo.Departments \", nella colonna 'Id'. \ R \ nLa dichiarazione è stata chiusa.
Dipartimento :
namespace DbSet_Exmp.Models
{
public class Department
{
public int Id { get; set; }
public string DeptName { get; set; }
public virtual ICollection<Employee> Employees { get; set; }
}
}
Classe dei dipendenti :
namespace DbSet_Exmp.Models
{
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Contact { get; set; }
public int Salary { get; set; }
public int DepartmentId { get; set; }
public virtual Department Department { get; set; }
}
}
Classe DbContext :
public class EmpDbContext:DbContext
{
public EmpDbContext() : base("name=myDBConString")
{
Database.SetInitializer(new DBInitializer());
}
public DbSet<Department> Departments { get; set; }
public DbSet<Employee> employees { get; set; }
}
Azione indice :
public ActionResult Index()
{
using (var context = new EmpDbContext())
{
Employee objEmp = new Employee() { Name = "Swara", Contact = "123569", Salary = 15000, DepartmentId = 2 };
context.employees.Add(objEmp);
context.SaveChanges();
}
return View();
}
Solitamente questo errore viene generato quando si assegna un valore a ForeignKey
ma non vi sono tali dati con quel valore nella tabella ForeignKey
.
Nel tuo caso non ci sono Department
con Id = 2
nella tua tabella Department
. Quindi puoi verificarlo nella tua tabella Departement
.