使用Code First和外键获取数据

本文关键字:获取 数据 Code First 使用 | 更新日期: 2023-09-27 18:00:22

我以为这会是一件直截了当的事情,但已经一整天了,我仍然找不到答案。让我们举一个非常简单的例子。我们有一个类别Post:

   public class Post
{
    public string Content { get; set; }
    public int BlogId { get; set; }
    public virtual Blog Blog { get; set; }
}

还有Blog类:

    public class Blog
{
    public string Name { get; set; }
    public virtual List<Post> Posts { get; set; }
}

现在,当我使用Blog数据时(特别是在dataGridView中),我可以通过在dataGridView中设置属性的名称来访问每个属性的值。唯一不能直接访问的数据是我从帖子中通过外键获得的数据。

如何为数据库中的每一行获取Post.Content?因为现在我只能在dataGridView中设置Post,它返回类似System.Data.Entity.DynamicProxy...的内容。

使用Code First和外键获取数据

您可以创建类似的DTO类型

public class PostDto
{
    public string Blog { get; set; }
    public string Content { get; set; }
}

通过填充

var dtos = from b in db.Blogs
           from p in b.Posts
           select new PostDto {
                                 Blog = b.Name,
                                 Content = p.Content
                              };

并将CCD_ 7与DGV结合。DGV不支持可展开的行,因此只能显示平面结构。如果你不想要重复的博客名称,你可以考虑使用两个网格的主细节布局。