0

如何在这里将外键与不同的名称相关联:post中的createdby和 users 表中的UserID

public class Post : IValidatableObject
{
    [Key]
    public long PostID { get; set; }

    public long? ParentPostID { get; set; }      


    [ForeignKey("CreatedBy")]  
    public virtual User Users { get; set; }

    [ScaffoldColumn(false)]
    public DateTime? CreatedDate { get; set; }

    [ScaffoldColumn(false)]
    public long? CreatedBy { get; set; }     
}

public class User
{
    [Key]
    public long UserID { get; set; }

    [Required]
    [MaxLength(20)]
    [Display(Name = "User Name")]
    public string UserName { get; set; }
}
4

1 回答 1

0

您的映射是正确的 - 特别是[ForeignKey("CreatedBy")]属性,您不需要更改任何内容。

在实体框架中的外键关系中,从属 (= Post) 及其外键始终引用主体 (= User) 的主键 - 并且主键是UserID- 按照惯例,还因为您已使用Key属性对其进行了标记。您无需再指定任何内容。

您的关系是可选的(0..1 对多),因为外键CreatedBy可以为空 ( long?)。因此,数据库中可能存在尚未由任何用户创建的帖子。如果您不希望这样,您可以使用不可为空的外键属性 ( long CreatedBy) 来建立所需的关系。

于 2012-04-21T11:28:08.223 回答