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,即使不能填充外键