Это мой первый набег в SQL CE или EF, поэтому у меня может быть много недоразумений. Я искал много записей в блоге, но все еще не могу понять, как это правильно.
У меня есть веб-сайт MVC3 для регистрации в гонке, в которой мы участвуем. У меня есть таблица RaceEvents и таблица Runners, в которой для каждого RaceEvent будет зарегистрировано много участников, то есть многие-к-одному. Вот POCO с лишними данными, удаленными:
public class RaceEvent
{
[Required]
public int Id { get; set; }
public virtual ICollection<Runner> Runners { get; set; }
}
public class Runner
{
[Required]
public int Id { get; set; }
[Required]
public int RaceEventId { get; set;}
[ForeignKey("RaceEventId")]
public RaceEvent RaceEvent { get; set; }
}
Что, насколько я могу понять, должно сработать. Насколько я понимаю, по соглашению следует выяснить, что RaceEventId является внешним ключом для RaceEvents. И если этого недостаточно, я говорю об этом с помощью атрибута ForeignKey.
Однако, похоже, это не работает. Всякий раз, когда я вставляю нового бегуна, он также вставляет новую запись в таблицу RaceEvents. И когда я смотрю на диаграмму таблицы в ServerExplorer, она показывает два золотых ключа в верхней части диаграммы таблицы Runners, один для Id, идентифицированный в свойствах как PrimaryKey, а другой для RaceEventId, не идентифицированный как PrimaryKey, но указано в свойствах для таблицы Runners, а не для таблицы RaceEvents. Я бы ожидал золотой ключ для Id, но серебряный ForeignKey для RaceEventId.
FWIW, меня не особо волнует ICollection в RaceEvent, но все записи блога, похоже, подразумевают, что это необходимо.
Кто-нибудь может мне помочь сделать это правильно?
Спасибо.