我的ForeignKey有问题。
错误:类型为“mvcCristal.Models.Almacen”的属性“co_art”上的ForeignKeyAttribute无效。在依赖类型'mvcCristal.Models.Almacen'上找不到导航属性'Articulo'。 Name值应该是有效的导航属性名称。
我的班级声明:
public class Articulo
{
[Required]
public string co_art { get; set; }
public string des_art { get; set; }
public string modelo { get; set; }
public string co_lin { get; set; }
public string co_subl { get; set; }
public string co_cat { get; set; }
public string co_col { get; set; }
[ForeignKey("co_art")]
public ICollection<Almacen> Almacenes { get; set; }
}
public class Almacen
{
[Key, Column(Order = 0)]
public string co_alma { get; set; }
public string des_alm { get; set; }
[Required, ForeignKey("Articulo"), Column(Order = 1)]
public string co_art { get; set; }
public double stock_act { get; set; }
}
有任何帮助吗?谢谢;我是EF的新人。
答案 0 :(得分:0)
您的注释看起来不正确
您似乎希望使用注释关联一对多关系。
Articulo 1 <--> * Almacen
键和外键的类型应为int。
我建议您按照教程了解更多有关注释的内容,例如
您也可以使用流畅的api而不是注释
答案 1 :(得分:0)
您获得的例外情况应该指向正确的方向,因为它明确说明了问题。它说,&#34;导航属性&#39; Articulo&#39;没有找到......&#39; ... Almacen&#39;。 Name值应该是有效的导航属性名称。&#34;
好的,所以外键的名称值(即Articulo
)必须是Almacen
上的导航属性,所以让我们这样做。
public class Almacen
{
[Key, Column( Order = 0 )]
public string co_alma { get; set; }
public string des_alm { get; set; }
[Required, ForeignKey( "Articulo" ), Column( Order = 1 )]
public string co_art { get; set; }
public double stock_act { get; set; }
public Articulo Articulo { get; set; }
}
在这样做后,我又得到了另一个错误,即co_art需要成为Articulo
上的密钥,所以我补充说。
public class Articulo
{
[Required]
[Key]
public string co_art { get; set; }
public string des_art { get; set; }
public string modelo { get; set; }
public string co_lin { get; set; }
public string co_subl { get; set; }
public string co_cat { get; set; }
public string co_col { get; set; }
[ForeignKey( "co_art" )]
public ICollection<Almacen> Almacenes { get; set; }
}
那时一切似乎都很开心。