У меня есть устаревший API, который работает на Asp.Net 4.6.1
и Entity Framework 6
.
У меня есть следующие pocos (сокращено для bevity):
public class JobStatusHistory
{
/*..*/
[ForeignKey("JobStatusHistorySignature")]
public int? JobStatusHistorySignatureId { get; set; }
public JobStatusHistorySignature JobStatusHistorySignature { get; set; }
}
и
public class JobStatusHistorySignature : Entity
{
/**...*/
[ForeignKey("JobStatusHistory")]
public int JobStatusHistoryId { get; set; }
public virtual JobStatusHistory JobStatusHistory { get; set; }
}
Если я пытаюсь запустить миграцию, как это, я получаю
Кратность недопустима в Role
ошибка.
I Затем установите отношения, используя свободный API следующим образом:
public JobStatusHistoryConfiguration(string schema = "dbo")
{
ToTable(schema + ".JobStatusHistories");
HasKey(x => x.Id);
HasOptional(x => x.JobStatusHistorySignature).WithRequired(x => x.JobStatusHistory);
}
и
public JobStatusHistorySignatureConfiguration(string schema = "dbo")
{
ToTable(schema + ".JobStatusHistorySignatures");
HasKey(x => x.Id);
HasRequired(x => x.JobStatusHistory).WithOptional(x => x.JobStatusHistorySignature);
}
Это позволяет запустить миграцию. Однако, когда я пытаюсь вставить новую сущность в таблицы JobStatusHistorySignature
следующим образом:
var jobStatusHistorySignature = new JobStatusHistorySignature
{
JobStatusHistoryId = jobStatusHistory.Id,
};
я получаю следующую ошибку;
Невозможно вставить явное значение для столбца идентификаторов в таблице 'JobStatusHistorySignatures', когда для IDENTITY_INSERT установлено значение OFF.
(что говорит о том, что мне нужно сгенерировать идентификатор столбца Identity, но, насколько я знаю, у меня нет)
Может кто-нибудь подсказать, пожалуйста, что я здесь сделал неправильно?