У меня следующая структура классов, и я использую первые миграции кода 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 это сделать?
Родитель должен иметь детей коллекция. (Также сделайте себе одолжение и удалите эти бесполезные префиксы t_).
@GertArnold У него есть детская коллекция. Если вы прочитаете весь пост, он объяснит свою настройку, что он сделал, чтобы представить проблему, и что он делает, чтобы исправить ее. Первоначально у него не было детей, поэтому ребенок был единственным с внешним ключом, он представил детей после создания БД, и теперь ребенок пытается создать 2 внешних ключа для родителя (потому что он уже был).
@MichaelPuckettII Правильно, я отвлекся от единственного имени (вероятно, слишком быстро прочитал слишком много сообщений). OP, вероятно, нуждается в это.
@GertArnold Я делал то же самое слишком много раз. Спасибо также за ссылку.





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