Односторонние отношения один-к-одному в Entity Framework - PullRequest
1 голос
/ 02 февраля 2020

У меня есть два класса моделей (Tickets и Activities), где Activities больше похож на справочную таблицу и не предполагает хранения каких-либо навигационных свойств или FK других объектов.

Запись в Tickets должна содержать один Activity, но во всей таблице Tickets будет много одинаковых Activities. Действия должны быть таблицей, а не (например) перечислением из-за возможности будущих обновлений и поправок.

Хотя это кажется достаточно тривиальным, я продолжаю сталкиваться с ошибками вроде Identity is Set to off.

Мои модели:

public class Tickets
{
    public int ID {get; set;}

    // fk
    public int ActivityID {get; set;

    // nav property
    public Activity Activity {get; set;}
    // other properties.        
}

public class Activity
{
    public int ID {get; set;}
    public int RankOrder {get; set;}
    //other properties
}

Я указал отображение домена для модели Tickets:

    builder.HasOne(t => t.Activity)
        .WithMany()
        .HasForeignKey(t => t.ActivityID);

на основе этого SO-сообщения и поста блога: здесь и здесь , но я не получаю его, мое последнее сообщение об ошибке:

SqlException: Невозможно вставить явное значение для столбца идентификации в таблице 'Activity', когда для IDENTITY_INSERT установлено значение OFF.

Кроме того, при таком отображении создается впечатление, что EF создал столбец Ticket в таблице Activity, чего я не хочу.

1 Ответ

0 голосов
/ 02 февраля 2020

Попробуйте это

builder.Entity<Ticket>() 
         .HasOne(t => t.Activity)
        .WithMany(a => a.Ticket)
        .HasForeignKey(t => t.ActivityID);
...