【问题标题】:Problem with Entity Framework 6 and WinForm DatagridEntity Framework 6 和 WinForm Datagrid 的问题
【发布时间】:2022-01-22 15:12:39
【问题描述】:

我的数据网格有问题,它显示了 book 表中的所有信息,但我看不到来自作者和流派表的包含信息,如此屏幕截图所示:

这是我的代码:

var DbBooks = db.Books
                .Include(b => b.Author)
                .Include(b => b.Genre)
                .ToList();
datagrindBooks.DataSource = DbBooks;

【问题讨论】:

  • 那是因为这些列显示了一个作者和一个流派对象;这些对象的string 表示。因此,您可以覆盖这些类中的ToString(),例如返回作者全名或流派名称。要查看其他可能的解决方案,您可以查看 this postother one 以了解如何在 DataGridView 中显示导航属性。
  • 非常感谢

标签: c# winforms datagrid entity-framework-6


【解决方案1】:

您可以将一些 NotMapped 属性放入 Books 实体中

public partial class Book{

  [NotMapped] //so EF ignores it
  public string AuthorName { get => Author.Name; }
  ...
}

等等;它们自己不存储数据,它们只是从子对象代理,DataGridView 会找到它们并显示它们返回的值。如果你想要两种方式,你也需要一套

【讨论】:

  • thx,我还有一个问题,我想隐藏我在列表中获得的一些属性,我使用了属性 Browsable(false) 是否可以,否则它会在我的代码中使用ef?
  • 我只是在 datagridview 自动生成它们之后从 datagridview 中删除它们 tbh .. dgvWhatever.AutoGenerateCOlumns = true; dgvWhatever.DataSource = booksList; dgvWhatever.Columns.Remove("BookCopys"); .. 它们是在设置数据源时生成的.. 但我相信 browsable(false ) 使 DGV 忽略该属性
猜你喜欢
  • 2017-12-30
  • 2013-12-25
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-05
  • 1970-01-01
相关资源
最近更新 更多