我现在开始使用实体框架,需要一些帮助来理解两个表之间的功能。首先,我有PhoneRecordsPhoneModels。每个PhoneRecord具有一个称为PhoneModelId的属性,该属性与PhoneModels之一相关。在MySQL中,这些属性设置为外键关系。

现在,我已将PhoneRecords的示例加载到DataGrid中。我有一个TextBox,我想在PhoneRecord上反映模型。目前,我的TextBox如下所示:

<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding SelectedRecord.PhoneModelId}"/>


毫不奇怪,将显示Id而不是NamePhoneModel。通常,如果没有EntityFramework,我只会在PhoneRecord本身上拥有一个称为PhoneModelName的属性,或者是我在写出JOIN命令时使用SELECT得到的类似属性。

在我看来,该方法是过时的,并且Entity Framework是一种用于编写较长的CRUD操作的强大工具。但是,我被困在如何将MVVM中绑定到PhoneModel名称上,而不是使用PhoneModelId上的PhoneRecord属性上。

最佳答案

尝试类似的东西:

"{Binding SelectedRecord.PhoneModel.Name}"


我不确定您使用的是哪个版本的EF或哪种风格(代码优先,数据库优先,现有数据库中的代码优先等)...但是...

在EF中,如果您有一个具有外键关系的对象,它将将该对象附加到其父项或子项。因此,每个PhoneRecord都将附加一个PhoneModel对象,反之亦然。如果您首先使用代码,则必须编写此关系的代码,如果您首先使用数据库,则它应该已经存在于模型(EDMX)中,并且您应该能够从PhoneRecord导航到PhoneModel并再次返回。

关于c# - MVVM绑定(bind)到 Entity Framework 中的外键属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45509697/

10-11 16:09