Asp.net 代码优先:我应该把数据注释放在;“必需”;在导航属性中?

Asp.net 代码优先:我应该把数据注释放在;“必需”;在导航属性中?,asp.net,entity-framework,ef-code-first,data-annotations,code-first,Asp.net,Entity Framework,Ef Code First,Data Annotations,Code First,当我使用“代码优先”时,我有一个关于如何定义条目的问题 我使用这些数据注释定义以下类: public class Producto { [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int ProductoID { get; set; } [ForeignKey("Parque"),Required] public int FKParque { get; set; }

当我使用“代码优先”时,我有一个关于如何定义条目的问题

我使用这些数据注释定义以下类:

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; }
}
问题是:我是否应该将数据注释“Required”放在导航属性“Parque”中? 如果我放置数据注释,当我尝试执行以下操作时:

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

            contexto.Productos.Add(nuevoProducto);

            contexto.SaveChanges();
}
发生错误的原因是可导航属性为null,并且标记为必需

正确的方法是什么

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


Thx.

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

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