我使用带有Fluent API的Entity Framework编写了一个REST API。我希望得到我的粉丝创建的帖子。我已经检索了关注者列表,但也想要他们的帖子。
我有User实体和Posts实体,如下所示:
public class User
{
public string Id { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
public class BlogPost
{
public string Summary { get; set; }
public string Body { get; set; }
public User CreatedBy { get; set; }
}
跟随者/用户之间的关系如下:
public class UserRelationship
{
public User UserId { get; set; }
public User Follower { get; set; }
}
现在我如何检索关注者的帖子?或者我是否必须改变结构本身?
答案 0 :(得分:0)
保留当前的模型结构,您需要为关注者设置一个获取BlogPost实体。这将为您提供关注者的帖子。但是,这将增加数据库的额外行程以及服务器端代码的一些转换。
在我看来,模型应该有点不同。用户是父实体,它也应该包含博客文章的详细信息。考虑到基于文档的NoSQL数据库,用户很容易识别为聚合,因此它必须能够促进您的应用程序可能需要的任何遍历。
所以,在代码中,我更喜欢这样的东西:
public class User
{
public int Id
{
get; set;
}
public string Name
{
get; set;
}
public ICollection<BlogPost> Blogs
{
get; set;
}
public ICollection<User> Followers
{
get; set;
}
}
public class BlogPost
{
public int Id
{
get; set;
}
public string Title
{
get; set;
}
public string Content
{
get; set;
}
public User CreatedBy
{
get; set;
}
}
在数据库方面,您需要采用映射表方法来设置用户之间的多对多关系。