使用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...
的内容。
您可以创建类似的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不支持可展开的行,因此只能显示平面结构。如果你不想要重复的博客名称,你可以考虑使用两个网格的主细节布局。