C# 是否有必要指定导航属性和外键属性?

C# 是否有必要指定导航属性和外键属性?,c#,entity-framework,navigation-properties,C#,Entity Framework,Navigation Properties,我有两个表:状态(主键Sid)和顺序(主键Oid)。该关系被设置为使用列StatusId按顺序将Sid作为外键 当我使用EF生成模型时,我得到了两个属性,它们表示状态。第一个是实际列(类型Nullable,它是外键)。第二个是导航属性(键入virtualstatus)。在状态中,我只得到一个引用订单的属性(虚拟ICollection) 我没有理由怀疑设置有任何问题,我没有修改类中的任何内容,没有部分修改,也没有更改T4脚本。所有内容都是从数据库自动生成的(首先没有代码) 不过,我注意到了一些困扰

我有两个表:状态(主键Sid)和顺序(主键Oid)。该关系被设置为使用列StatusId按顺序将Sid作为外键

当我使用EF生成模型时,我得到了两个属性,它们表示状态。第一个是实际列(类型Nullable,它是外键)。第二个是导航属性(键入virtualstatus)。在状态中,我只得到一个引用订单的属性(虚拟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}" />


您能告诉我们您设置状态的代码吗?不过,您通常是正确的,设置导航属性就足够了。要想找出真正的问题,我们需要看看那些不能正常工作的代码well@Vlad274已按要求发布标记。@ConvertToInt32不确定。我如何验证它是(或不是)?