外键MVC4代码优先于c#

外键MVC4代码优先于c#,c#,asp.net-mvc,C#,Asp.net Mvc,如何向模型添加外键(代码优先) 我有一个模型产品,它有一个ID(主键),我想像这样添加到我的模型订单中 public class Order { public int ID {get; set;} [Required] public int Total {get; set;} [Required] public int ProductId{get; set;} } 但是如何使ProductId像外键一样引用产品模型的id呢? 在Stackoverflow上有很多相似的问题

如何向模型添加外键(代码优先)

我有一个模型产品,它有一个ID(主键),我想像这样添加到我的模型订单中

public class Order
{
 public int ID {get; set;}

 [Required]
 public int Total {get; set;}    

 [Required]
 public int ProductId{get; set;}
}
但是如何使ProductId像外键一样引用产品模型的id呢?
在Stackoverflow上有很多相似的问题,但都有不同的答案,但它们不适合我。我真的希望有人有一个解决方案,或者可以为我指出正确的方向并给出解释。

您需要添加导航属性:

public virtual Product Product { get; set; }
因此,Order类将如下所示:

public class Order
{
    public int ID {get; set;}

    [Required]
    public int Total {get; set;}    

    [Required]
    public int ProductId{get; set;}

    [Required]
    public virtual Product Product { get; set; }
}
public class Order
{
 public int ID {get; set;}

 [Required]
 public int Total {get; set;}    

 [Required]
 public int ProductId{get; set;}

 [ForeignKey("ProductId")]
 public virtual Product Product {get; set;}

}

另外,严格来说,一旦您拥有虚拟产品属性,就不需要
ProductId
属性。

您可以这样做:

public class Order
{
    public int ID {get; set;}

    [Required]
    public int Total {get; set;}    

    [Required]
    public int ProductId{get; set;}

    [Required]
    public virtual Product Product { get; set; }
}
public class Order
{
 public int ID {get; set;}

 [Required]
 public int Total {get; set;}    

 [Required]
 public int ProductId{get; set;}

 [ForeignKey("ProductId")]
 public virtual Product Product {get; set;}

}

谢谢,我会试试的,你能解释一下为什么会有2X产品吗?这对我来说似乎很奇怪,我在其他示例中看到过,但我不明白为什么。第一个是类型(即您的
产品
型号),第二个只是物业的名称。谢谢,这是否意味着我可以将其命名为public virtual Product ForeignProduct是的,您喜欢的任何东西都可以:)没问题谢谢你的帮助,我被卡住了!晚安。