EF CTP4 Отсутствующие столбцы в сгенерированной таблице - PullRequest
1 голос
/ 26 ноября 2010

У меня проблема, которую я просто не могу понять. Допустим, в моем домене определены 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 Ответ

0 голосов
/ 27 ноября 2010

Ваш код прекрасно создал для меня нужную схему в базе данных: alt text

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

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

Хотя текущий класс 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, а также свойства навигации, что дает вам максимальную гибкость для работы с вашей моделью.

...