实体框架可选关系映射

时间:2015-09-03 11:37:58

标签: entity-framework ef-fluent-api

我有三个POCO实体类:

public class User {
    public int Id { get; set; }
    public string UserName { get; set; }
}

public class BlogPost {
    public int Id { get; set; }
    public string Text { get; set; }
    public virtual ICollection<BlogComment> Comments { get; set; }
}

public class BlogComment {
    public int Id { get; set; }
    public int PostId { get; set;
    public int? UserId { get; set; }
    public string Text { get; set; }
    public virtual BlogPost Post { get; set; }
    public virtual User User { get; set; }
}

要强调的几点要点:

  1. 从用户端来看,它并不知道也不关心BlogComments。用户实体可以由项目中的大量实体引用。能够从这些实体引用用户非常重要,但不能从关系的用户端引用。
  2. BlogComment可能会或可能不会引用用户,具体取决于评论是否由经过身份验证的用户提出。
  3. 在我的Entity Framework配置中,我从BlogComment端定义了BlogPost和BlogComment之间的关系:

    HasRequired(t => t.Post)
        .WithMany(t => t.Comments)
        .HasForeignKey(t => t.PostId);
    

    但我很难理解如何构建对用户的可选引用:

    HasOptional(t => t.User)
       // What comes next, and why?
    

    任何建议都将受到赞赏。

0 个答案:

没有答案