J'utilise Entity Framework 5 et le modèle UnitOfWork + Repository.
J'essaie de créer l'entité suivante :
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; }
}
J'ai remarqué que lorsque je crée la nouvelle entité ViaggioAttivita qui remplit l'IdViaggio, lorsque je fais le calcul suivant
ViaggioAttivita attivita = new ViaggioAttivita();
attivita.IdViaggio = ParentId;
unitOfWork.ViaggiAttivitaRepository.Insert(attivita);
le bien de navigation attivita.Viaggio n'est pas mis à jour.
Si je mets directement à jour l'attivita.Viaggio au lieu de l'Id
ViaggioAttivita attivita = new ViaggioAttivita();
attivita.Viaggio = unitOfWork.ViaggiRepository.GetByID(ParentId);
unitOfWork.ViaggiAttivitaRepository.Insert(attivita);
Le Viaggio est bien sûr mis à jour, mais la clé IdViaggio l'est aussi.
Qu'est-ce que je rate ?
Pourquoi cette différence ?
J'ai essayé d'appeler un .Save() mais rien ne change.
Il semble que les relations ne soient mises à jour que si je mets manuellement à jour l'entité, mais qu'elles ne soient pas mises à jour si je ne mets à jour que la clé.
Merci.
Edit 1 :
Je suis sur Sql Server 2008, MVC3, Entity Framework 5 (runtime v4.0.30319 bien sûr). Mode Database First. Les deux tables ont la relation (bien sûr, sinon la clé ne serait pas remplie en utilisant la deuxième méthode).
Edit 2 :
J'essaie d'apporter des informations sur 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>