在我的项目中,用户可以像评论或帖子一样喜欢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; }
}
这是生成的数据库: