Asp.net mvc实体框架代码首先将不同名称的外键关联起来

时间:2012-04-21 10:22:22

标签: entity-framework orm entity-framework-4.1 foreign-keys

如何将外键与不同的名称关联起来:在帖子中创建,在用户表中 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; }
}

1 个答案:

答案 0 :(得分:0)

您的映射是正确的 - 尤其是[ForeignKey("CreatedBy")]属性,您无需更改任何内容。

在Entity Framework中的外键关系中,依赖(= Post)及其外键始终引用主体的主键(= User) - 主键为{{ 1}} - 按惯例,也因为您使用UserID属性标记了它。您无需再指定任何内容。

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