代码优先:我应该在导航属性中将数据注释“必需”吗?

时间:2011-11-09 17:09:37

标签: asp.net entity-framework ef-code-first data-annotations code-first

我对使用“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();
}

发生错误,因为navigable属性为null并标记为必需。

什么是正确的方法?

对不起,如果我的英语不是很好。

THX。

1 个答案:

答案 0 :(得分:1)

我认为将required属性放在FKParque上就足够了。在从数据库保存/检索对象之前,不会填充导航属性,因此即使外键不能,也可能为null。