实体框架 - 获取粉丝帖子

时间:2018-04-17 05:26:18

标签: c# entity-framework ef-code-first entity-framework-4 ef-fluent-api

我使用带有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; }
}

现在我如何检索关注者的帖子?或者我是否必须改变结构本身?

1 个答案:

答案 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;
    }
}

在数据库方面,您需要采用映射表方法来设置用户之间的多对多关系。