我对使用“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。
答案 0 :(得分:1)
我认为将required
属性放在FKParque
上就足够了。在从数据库保存/检索对象之前,不会填充导航属性,因此即使外键不能,也可能为null。