Что ж, PK ссылочной сущности требуется , чтобы правильно установить FK ссылочной сущности.
Если у вас его нет, очевидно, вы должны его найти(получить его из базы данных) в зависимости от того, что у вас есть (вторичный идентификатор в вашем случае).Например:
var school = context.Schools.Single(e => e.ExternalId == externalId);
var student = new Student { School = school, ... };
context.Students.Add(student);
context.SaveChanges();
Нет способа заставить это работать без извлечения.Если вы не хотите извлекать всю ссылочную сущность (и уверены, что она не отслеживается контекстом), вы можете извлечь только PK и Attach
заглушку:
var schoolId = context.Schools.Where(e => e.ExternalId == externalId)
.Select(e => e.Id).Single();
var school = new School( Id = schoolId);
context.Attach(school);
// ...