我认为这将是直截了当的,但它已经整整一天了,我仍然无法做到这一点。找到答案。让我们来看一个非常简单的例子。我们有一个班级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...
的内容。
答案 0 :(得分: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不支持可扩展行,因此您只能显示平面结构。如果您不想要重复的博客名称,可以考虑使用两个网格的主 - 细节布局。