我正在使用 Entity Framework 5 和 UnitOfWork + Repository 模式。
我正在尝试创建以下实体:
public partial class ViaggioAttivita
{
public System.Guid Id { get; set; }
public System.Guid IdViaggio { get; set; }
public virtual Viaggio Viaggio { get; set; }
}
public partial class Viaggio
{
public System.Guid Id { get; set; }
public virtual ICollection<ViaggioAttivita> ViaggiAttivita { get; set; }
}
我注意到当我创建填充 IdViaggio 的新 ViaggioAttivita 实体时,当我这样做时
ViaggioAttivita attivita = new ViaggioAttivita();
attivita.IdViaggio = ParentId;
unitOfWork.ViaggiAttivitaRepository.Insert(attivita);
导航属性 attivita.Viaggio 没有得到更新。
如果我直接更新 attivita.Viaggio 而不是 Id
ViaggioAttivita attivita = new ViaggioAttivita();
attivita.Viaggio = unitOfWork.ViaggiRepository.GetByID(ParentId);
unitOfWork.ViaggiAttivitaRepository.Insert(attivita);
Viaggio 当然会更新,但 IdViaggio 密钥也会更新。
我错过了什么?
为什么我会得到这种差异?
我尝试调用 .Save() 但没有任何变化。
似乎关系只有在我手动更新实体时才会更新,但如果我只更新密钥,它们不会更新。
谢谢
编辑1:
我使用的是 Sql Server 2008、MVC3、Entity Framework 5(当然是运行时 v4.0.30319)。数据库优先模式。这两个表是有关系的(当然,否则不会使用第二种方法填充Key)。
编辑2:
我尝试过去一些 EDMX 信息;
<EntityType Name="Viaggio">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Guid" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<NavigationProperty Name="ViaggiAttivita" Relationship="DatabaseModel.FK_ViaggiAttivita_Viaggi" FromRole="Viaggi" ToRole="ViaggiAttivita" />
</EntityType>
<EntityType Name="ViaggioAttivita">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Guid" Nullable="false" annotation:StoreGeneratedPattern="Identity" />
<Property Name="IdViaggio" Type="Guid" Nullable="false" />
<NavigationProperty Name="Viaggio" Relationship="DatabaseModel.FK_ViaggiAttivita_Viaggi" FromRole="ViaggiAttivita" ToRole="Viaggi" />
</EntityType>
<AssociationSet Name="FK_ViaggiAttivita_Viaggi" Association="DatabaseModel.FK_ViaggiAttivita_Viaggi">
<End Role="Viaggi" EntitySet="Viaggi" />
<End Role="ViaggiAttivita" EntitySet="ViaggiAttivita" />
</AssociationSet>