MVVM绑定到实体框架中的外键属性

问题描述:

我开始使用实体框架,并且需要一些帮助来理解两个表之间的功能。首先我有PhoneRecordsPhoneModels。每个PhoneRecord都有一个名为PhoneModelId的属性,该属性与PhoneModels之一有关。在MySQL中,这些属性被设置为外键关系。MVVM绑定到实体框架中的外键属性

现在我已将PhoneRecords的样本加载到DataGrid中。我有一个TextBox,我想反映PhoneRecord上的模型。目前我TextBox看起来像这样:

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

以及令人惊讶的Id显示,而不是在PhoneModelName。通常没有的EntityFramework我只想有一个属性上PhoneRecord本身叫PhoneModelName或类似的东西,我会得到使用JOIN写出我SELECT命令时..

这在我看来,这种方法已经过时,而且实体框架是一个强大的工具,可以避开长时间的CRUD操作。然而,我看到我能够在MVVM中绑定到PhoneModel名称,而不是在PhoneRecord上使用PhoneModelId属性。

+0

如果您的模型反映了数据库,您可以在名为PhoneModel的'PhoneRecord'上创建一个相关属性,如果您告诉它,EF将填充此属性,例如:var records = context.PhoneRecords.Include(“PhoneModel “)'并且在你的绑定中,你会'{Binding SelectedRecord.PhoneModel.Name}' – JobaDiniz

试着这么做:

"{Binding SelectedRecord.PhoneModel.Name}" 

我不知道你正在使用或香味其中EF的版本(代号第一,DB头,代码先用现有的数据库,等等)。 ..但是...

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