Diciamo che ho queste due entità molto semplici:EF4.1 Codice Primo: Come disattivare cascata eliminazione per un rapporto senza proprietà di navigazione in entità dipende
public class ParentEntity
{
public int Id;
public virtual ICollection<ChildEntity> Childrens;
}
public class ChildEntity
{
public int Id;
public int ParentEntityId; // Foreign Key
public virtual ParentEntity parent; // [NOTWANTED]
}
Per alcune ragioni, io non voglio che il ChildEntity per mantenere un riferimento al suo genitore. Voglio solo che mantenga l'id ParentEntity ma niente di più. Fino ad ora, nessun problema, ho appena eliminato la riga [NOTWANTED] e tutto funziona come previsto.
Il mio problema qui è: come disabilitare l'eliminazione a cascata in quel caso specifico?
Se avevo ancora la proprietà di navigazione genitore che sarebbe stato così facile come:
modelBuilder.Entity<ChildEntity>()
.HasRequired(c => c.parent)
.WithMany(p => p.Childrens)
.WillCascadeOndelete(false)
Tuttavia senza la proprietà di navigazione non ho idea di come posso raggiungere per disabilitare la cascata sulla cancellazione (senza disattivarlo a livello globale naturalmente, né per tabella, ma solo per la relazione).
Quello che ho fatto in questo momento è quello di impostare la chiave esterna come un int nullable, al fine di disattivare la cascata sulla eliminazione, ma non è abbastanza:
public int? ParentEntityId; // Foreign Key - nullable just to disable cascade on delete
Come posso farlo funzionare con API fluente? Pensa dovrebbe essere possibile.
è necessario .hasOne (ParentEntity) – Saeid