一个非常简单的问题,但是看起来我正在尝试在两个模型之间实现一个简单的一对多关系。
到目前为止,我所拥有的是:产品类别:
public class Products
{
public long Id { get; set; }
public long Code { get; set; }
public DateTime DateCreated { get; set; }
public DateTime DateModified { get; set; }
public Boolean Reviewed { get; set; }
[ForeignKey("BundleId")]
public int BundleId { get; set; }
public virtual Bundles Bundle { get; set; }
}
缺陷类如下所示:
public class Defects
{
public long Id { get; set; }
public String Description { get; set; }
public String Picture { get; set; }
public DateTime DateCreated { get; set; }
[ForeignKey("ProductId")]
public int ProductId { get; set; }
public Products Product { get; set; }
[ForeignKey("UserId")]
public int UserId { get; set; }
public virtual Users User { get; set; }
}
我以为我不需要向Products
类添加Defects
的ICollection
,因为它是“简单”的一对多关系,并且此代码足以在Defects
类中获取产品的ID(我不需要更多)。
但是,我当然会例外:
无法将属性“ ProductId”配置为导航属性。 该属性必须是有效的实体类型,并且该属性应具有非抽象的getter和setter
我该如何解决这个问题? 我的两个外键可能做错了一些,但是由于我声明了外键的名称,因此我认为它已经足够了。
感谢您的关注。
这就是您的关系可以提炼的。
请注意,ForeignKey注释将以key属性的名称应用于导航属性。
如果您建立一对多关系-那么ICollection是绝对必要的。
否则“很多”在哪里
public class Products
{
public int Id { get; set; }
public virtual List<Defects> Bundle { get; set; }
}
public class Defects
{
public long Id { get; set; }
public int ProductId { get; set; }
[ForeignKey("ProductId")]
public Products Product { get; set; }
}
FK也可以应用于key属性。 但是在这种情况下,您必须在其中放置相关类的实例的名称
public class Defects
{
public long Id { get; set; }
[ForeignKey("Product")]
public int ProductId { get; set; }
public Products Product { get; set; }
}