Сущность определяет внешний ключ

У меня следующая структура классов, и я использую первые миграции кода Entity для создания базы данных из этих классов:

public class t_ParentClass
{
    /// <summary>
    /// Unique id
    /// </summary>
    public int UNID { get; set; }
}


public class t_ChildClass
{
    /// <summary>
    /// UNID
    /// </summary>
    public int UNID { get; set; }

    /// <summary>
    /// Event Id
    /// </summary>
    public int? ParentId { get; set; }

    /// <summary>
    /// Review event
    /// </summary>
    public t_ParentClass Parent { get; set; }
}

Эта настройка создала столбец внешнего ключа в таблице t_ChildClass.

Все в порядке и работает хорошо.

Однако я также использую Linq-to-entities для запроса этих таблиц.

Проблема с описанной выше настройкой заключается в том, что я не могу делать следующее:

var parent = context.parent.include(x => x.child);

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

public class t_ParentClass
{
    /// <summary>
    /// Unique id
    /// </summary>
    public int UNID { get; set; }

    /// <summary>
    /// Child
    /// </summary>
    public List<t_ChildClass> Child { get; set; }
}

public class t_ChildClass
{
    /// <summary>
    /// UNID
    /// </summary>
    public int UNID { get; set; }

    /// <summary>
    /// Event Id
    /// </summary>
    public int? ParentId { get; set; }

    /// <summary>
    /// Review event
    /// </summary>
    public t_ParentClass Parent { get; set; }
}

Проблема здесь в том, что при миграции теперь требуется добавить новый столбец в дочернюю таблицу, чтобы представить то, что рассматривается как новый внешний ключ для родительской таблицы.

Итак, мой вопрос:

Как я могу заставить его распознать, что столбец уже существует в дочерней таблице, и использовать его в качестве связи между родительской и дочерней таблицами, а не создавать новый столбец.

Я знаю, что мог бы просто согласиться с этим, но есть данные в некоторых таблицах, и бросить внешний ключ и воссоздать его - небольшая проблема.

Может через класс EntityTypeConfiguration это сделать?

Ваш код правильный. Какое точное сообщение об ошибке при миграции.

CodeNotFound 04.05.2018 14:08

Родитель должен иметь детей коллекция. (Также сделайте себе одолжение и удалите эти бесполезные префиксы t_).

Gert Arnold 04.05.2018 14:12

@GertArnold У него есть детская коллекция. Если вы прочитаете весь пост, он объяснит свою настройку, что он сделал, чтобы представить проблему, и что он делает, чтобы исправить ее. Первоначально у него не было детей, поэтому ребенок был единственным с внешним ключом, он представил детей после создания БД, и теперь ребенок пытается создать 2 внешних ключа для родителя (потому что он уже был).

Michael Puckett II 04.05.2018 15:29

@MichaelPuckettII Правильно, я отвлекся от единственного имени (вероятно, слишком быстро прочитал слишком много сообщений). OP, вероятно, нуждается в это.

Gert Arnold 04.05.2018 17:58

@GertArnold Я делал то же самое слишком много раз. Спасибо также за ссылку.

Michael Puckett II 04.05.2018 18:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
37
0

Другие вопросы по теме