У меня следующая структура классов, и я использую первые миграции кода сущности для создания базы данных из этих классов:
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
класс?