我正在开始使用 Entity Framework ,需要一些帮助来理解两个表之间的功能。首先,我有 PhoneRecords
和 PhoneModels
。每个 PhoneRecord
都有一个名为 PhoneModelId
的属性,该属性与 PhoneModels
之一相关。在 MySQL 中,这些属性被设置为外键关系。
现在我已将 PhoneRecords
示例加载到 DataGrid
中。我有一个 TextBox
,我想在 PhoneRecord
上反射(reflect)模型。目前我的 TextBox
看起来像这样:
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding SelectedRecord.PhoneModelId}"/>
不出所料,显示的是 Id
,而不是 PhoneModel
的 Name
。通常,如果没有 EntityFramework,我只会在 PhoneRecord
本身上有一个名为 PhoneModelName
的属性或类似的属性,在写出我的代码时,我会使用 JOIN
获得该属性。 SELECT
命令..
在我看来,这种方法已经过时了,而 Entity Framework 是一个强大的工具,可以用来解决编写长 CRUD 操作的问题。但是,我一直在思考如何在 MVVM 中绑定(bind)到 PhoneModel
名称,而不是使用 PhoneRecord
上的 PhoneModelId
属性。
最佳答案
尝试如下:
"{Binding SelectedRecord.PhoneModel.Name}"
我不确定您使用的是哪个版本的 EF 或哪种风格(代码优先、数据库优先、现有数据库的代码优先等)...但是...
在 EF 中,如果您有一个具有外键关系的对象,它将将该对象附加到其父对象或子对象。因此每个 PhoneRecord 都会附加一个 PhoneModel 对象,反之亦然。如果您首先使用代码,则必须对这种关系进行编码,如果您首先使用数据库,它应该已经存在于模型(EDMX)中,并且您应该能够从 PhoneRecord 导航到 PhoneModel 并再次返回。
关于c# - MVVM 绑定(bind)到 Entity Framework 中的外键属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45509697/