Entity Framework 4 Отношения с проблемами FluentApi - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть устаревший 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, но, насколько я знаю, у меня нет)

Может кто-нибудь подсказать, пожалуйста, что я здесь сделал неправильно?

...