如何将一对一连接实体中的字段添加到Datagridview

时间:2016-03-14 10:47:48

标签: c# winforms entity-framework datagridview

我创建了一个winform,其中包含一个datagridview,其中包含我的一个数据库表的所有实体。我这样做是通过创建一个数据源并从所述数据源创建一个datagridview(根据这个:https://msdn.microsoft.com/en-us/data/jj682076.aspx)。

现在我有一个很好的datagridview,我已经开始定制它。我的问题是:我想从连接的实体获取信息。例如。我的表包含一系列书籍。每本书都与一位作者相关联。现在我可以简单地覆盖作者实体ToString-Function,并有一个指定每本书作者的列。但是,我如何添加另一列显示书籍作者的DOB?我觉得,可能有一种方法来编辑数据源以满足我的需求,但我不知道如何......

谢谢:)

1 个答案:

答案 0 :(得分:1)

我认为将数据显示与实际保存到数据库的方式分开是件好事。这样,如果数据库发生更改,则无需更改显示。

假设您正在与学生和教师创建学校数据库,他们 - 与普遍看法相反 - 都是姓名/地址/电话号码等人。因为关系数据库不知道继承的概念,您将拥有想一个在何处放置继承的Person数据的方法:在一个单独的表中?作为教师的表格的一部分,作为与学生的表格的一部分?或许是另一种方法。您的选择取决于您对数据使用方式的期望。

如果在程序的生命周期内,您的方法发生了变化,您不必更改数据的所有用户。因此,您隐藏了数据库在内部的组织方式。

您可能已经将数据网格视图组织成用户体验为属于一起的各种事物:他们希望看到作者的书和他的出生数据,以及可能还有其他一些项目。在内部,你将作者与他的书分开,人类并不感兴趣。

因此,最好的方法是创建一个表示用户对datagridview中行的想法的类。所以,有一本书,作者和出生日期的课程。创建类的对象时,使用正确的join和/或include语句从数据库中填充所有项目。

只有在被要求时才考虑从数据库中检索数据。