Получить ошибку значение внешнего ключа не может быть вставлено, так как соответствующее значение первичного ключа не существует. [ Имя ограничения внешнего ключа = ...]
Я пытаюсь создать внешний ключ в EF, но постоянно получаю сообщение об ошибке
"Значение внешнего ключа не может быть вставлено, поскольку соответствующее значение первичного ключа не существует."
Студент уже ссылается на AddressDetail, и я пытаюсь создать еще одного ссылочного сотрудника для AddressDetail..
public abstract class BaseEntity { [Key] public int Id { get; set; } public DateTime? AddedDate { get; set; } public string AddedBy { get; set; } public DateTime? ModifiedDate { get; set; } public string ModifiedBy { get; set; } } public class Student : BaseEntity { public string AppNo { get; set; } public string Name { get; set; } public virtual ICollection<addressdetail> AddressDetails { get; set; } } public class Employe : BaseEntity { public string Name { get; set; } public virtual ICollection<addressdetail> AddressDetails { get; set; } } public class AddressDetail : BaseEntity { public int RefId { get; set; } public string Address { get; set; } public virtual Student Students { get; set; } public virtual Employe Employes { get; set; } } protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<addressdetail>() .HasRequired(i => i.Student) .WithMany(a => a.AddressDetails) .HasForeignKey(f => f.RefId) .WillCascadeOnDelete(false); modelBuilder.Entity<addressdetail>() .HasRequired(i => i.Employe) .WithMany(a => a.AddressDetails) .HasForeignKey(f => f.RefId) .WillCascadeOnDelete(false); }
Что я уже пробовал:
использование (var ctx = new InstituteContext())
{
Студент Стю=новый студент
{
AppNo= " A001",
Имя= " Мохан",
AddressDetails = новый список & lt;addressdetail>
{
новый Адресдеталь
{
RefId= Id, / / получение первичного ключа студента из BaseEntity
Адрес = " Варанаси"
}
};
СТХ.Добавить(ГТУ);
СТХ.Сохранить();
}
}
Что я делаю не так?
Пожалуйста, помоги мне, гьес
Спасибо
Манмохан
The Praveen Singh
потому что вы вставили значение вашего внешнего ключа до того, как оно существует в таблице, в которой вы сделали первичный ключ.