1

我认为这将是直截了当的事情,但已经一整天了,我仍然找不到答案。让我们举一个非常简单的例子。我们有一堂课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 中通过外键获取的数据。

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

4

1 回答 1

1

您可以像这样创建 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
                              };

并绑定dtos.ToList()到 DGV。DGV 不支持可扩展行,因此只能显示平面结构。如果您不想要重复的博客名称,您可以考虑使用两个网格的主从布局。

于 2013-02-20T21:35:52.870 回答