Первый код: я должен поместить аннотацию данных «Обязательно» в свойство навигации? - PullRequest
1 голос
/ 09 ноября 2011

У меня есть вопрос о том, как я определяю записи при работе с «Code First».

Я определяю следующий класс с этими аннотациями данных:

public class Producto
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ProductoID { get; set; }

    [ForeignKey("Parque"),Required]
    public int FKParque { get; set; }
    [ForeignKey("FKParque"), Required]
    public virtual Parque Parque { get; set; }

    public string Nombre { get; set; }
}

Вопросэто: Должен ли я поместить аннотацию данных «Обязательно» в свойство навигации «Parque»?Если я добавлю аннотацию данных, когда я попытаюсь сделать:

using (MiContexto contexto = new MiContexto()) {
            Producto nuevoProducto = new Producto();
            nuevoProducto.Nombre = "nuevo";
            nuevoProducto.FKParque = 1;

            contexto.Productos.Add(nuevoProducto);

            contexto.SaveChanges();
}

Произойдет ошибка, поскольку свойство навигации имеет нулевое значение и помечено как обязательное.

Каков будет правильный подход?

Извините, если мой английский не очень хорош.

Спасибо.

1 Ответ

1 голос
/ 09 ноября 2011

Я думаю, что размещения атрибута required на FKParque достаточно. Свойство навигации не заполняется до тех пор, пока объект не будет сохранен / извлечен из базы данных, поэтому потенциально может иметь значение null, даже если внешний ключ не может быть.

...