c# - MVVM 绑定(bind)到 Entity Framework 中的外键属性

标签 c# mysql wpf entity-framework mvvm

我正在开始使用 Entity Framework ,需要一些帮助来理解两个表之间的功能。首先,我有 PhoneRecordsPhoneModels。每个 PhoneRecord 都有一个名为 PhoneModelId 的属性,该属性与 PhoneModels 之一相关。在 MySQL 中,这些属性被设置为外键关系。

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

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

不出所料,显示的是 Id,而不是 PhoneModelName。通常,如果没有 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/

相关文章:

c# - C# 闭包对垃圾收集器的奇怪影响

c# - 设置 Log4Net 以记录类库的输出

C# 并行.For

c# - 如何仅在使用 TPL 时从自己的方法获取堆栈跟踪?

mysql - 将一列设置值转换为 MySQL 中的一列单个值

c# - 如何知道 wpf 应用程序是否在终端服务 session 中?

mysql - 复制粘贴与输入 "alter user "root“@"localhost"标识为...”

java - maven : 'sudo mvn package' has errors, 中的 jar 出现错误,但 'mvn package' 没有;都不能正常工作

wpf - 按钮命令未在 ListView 组标题中触发

wpf - WPF d3d9.dll崩溃