EF CTP4 Отсутствующие столбцы в сгенерированной таблице

У меня проблема, которую я просто не могу понять. Допустим, у меня есть 2 сущности, определенные в моем домене; Человек и Документ. Ниже приведено определение для документа:

public class Document
{
    public int Id { get; set; }

    [Required]
    [StringLength(255)]
    public string Title { get; set; }
    public DateTime Date { get; set; }

    public virtual Person Owner{ get; set; }
    public virtual Person AssignedTo { get; set; }
}

Теперь, когда EF CTP4 создает таблицу SQL при инициализации, существует только одно сопоставление поля для Person.Id, являющегося Owner_id. Что бы я ни пытался, поле для AssignedTo никогда не создается.

Что-нибудь, что могло бы решить это?

С Уважением,

avsomeren

1 ответ

Ваш код отлично создал желаемую схему в базе данных для меня:альтернативный текст

Если вы не получите эту схему в своей БД, то я предполагаю, что что-то не так с остальной частью вашей объектной модели. Не могли бы вы опубликовать свою полную объектную модель, пожалуйста?

Другое решение:

Хотя ваш текущий класс Document даст вам желаемые результаты, но вы все равно можете воспользоваться Конвенциями для Code First и явно указать FK для ваших свойств навигации:

public class Document
{
    public int Id { get; set; }
    [Required][StringLength(255)]
    public string Title { get; set; }
    public DateTime Date { get; set; }

    public int OwnerID { get; set; }
    public int AssignedToID { get; set; }

    public virtual Person Owner { get; set; }
    public virtual Person AssignedTo { get; set; }

}

Code First теперь сделает вывод, что любое свойство с именем <имя свойства навигации><имя свойства первичного ключа> (например, OwnerID) с тем же типом данных, что и первичный ключ (int), представляет собой внешний ключ для отношения.

По сути, это приводит к той же схеме БД, к тому же у вас есть FK на объекте Document, а также свойства навигации, что дает вам максимальную гибкость для работы с вашей моделью.

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