实体框架生成的表中可能存在的冗余

时间:2015-03-05 17:04:18

标签: c# entity-framework inheritance

在我的项目中,用户可以像评论或帖子一样喜欢Facebook喜欢。为此,我创建了一个名为Like的抽象基类,用于保留喜欢帖子或评论的用户的if,以及操作的日期时间。我有CommentLike类继承自Like类,它只有Comment属性,同样,我有PostLike类继承自Like类,它只有Post属性。

我使用Entity Framework,我的数据库生成成功。在生成的数据库中,表中有CommentId,PostId和Discriminator字段。问题是,如果用户只喜欢一个评论,并且只喜欢发帖,那么数据库中的CommentId字段将保持为空冗余。我想知道这是不是一个问题。如果不是这三个字段,我只有一个名为RelatedItem的字段,它可以指示相关的注释或帖子。在这种情况下,我猜不到定义外键。这也是一个问题吗?

在这种情况下最好的方法是什么?

public abstract class Like
{
    public int LikeId { get; set; }

    [Required]
    public DateTime WhenLiked { get; set; }

    [ForeignKey("WhoLiked")]
    public string UserId { get; set; }

    public Person WhoLiked { get; set; }
}

public class PostLike : Like
{
    [Required]
    public Post Post { get; set; }

    [ForeignKey("Post")]
    public int PostId { get; set; }
}

public class CommentLike : Like
{
    [ForeignKey("Comment")]
    public int CommentId { get; set; }

    [Required]
    public Comment Comment { get; set; }
}

这是生成的数据库:

enter image description here

0 个答案:

没有答案