是否有必要分配导航属性和外键属性?

时间:2015-10-15 16:08:01

标签: c# entity-framework navigation-properties

我有两个表:状态(主键 Sid )和订单(主键 Oid )。设置关系,以便 Sid Order 中的外键,使用列 StatusId

当我使用EF生成模型时,我在 Order 中获得了两个引用 Status 的属性。首先是实际列(类型 Nullable ,这是外键)。其次是导航属性(类型虚拟状态)。在状态中,我只获得一个引用订单的属性(虚拟ICollection )。

我没有理由怀疑设置有什么问题,我没有修改课程中的任何内容,我没有部分修改,我也没有改变T4脚本。一切都是从数据库自动生成的(没有代码优先)。

但是,我注意到一些令我困扰的事情。当我编辑其中一个订单时,我设置了它的状态(不是id整数而是实际属性)。在调试器中,我检查它是否已设置。但是,然后我调用 SaveChanges ,那些没有存储 - 数据库不包含更新,重新加载实体会在我输入更改之前生成状态。

目前我解决了这个问题。

private void Combox_Changed(object sender, SelectionChangedEventArgs eventArgs)
{
  EditedOrder.StatusId = EditedOrder.Status.Sid;
}

然而,这似乎是一种解决我在代码中遇到的真正问题的解决方法,而不是需要做的事情。我的问题是我的怀疑是否合理。

属性或订单是通过使用以下XAML标记绑定到组合框的数据设置的。

<ComboBox Name="Status"
          DisplayMemberPath="Name"
          ItemsSource="{Binding Statuses}"
          SelectedItem="{Binding Path=Order.Status}"
          SelectionChanged="Combox_Changed"
          Style="{StaticResource DefaultComboBoxStyle}" />

0 个答案:

没有答案