213 messaggi dal 03 ottobre 2006
Ho due entità fatte così per realizzare una relazione 1 a 0 o 1 quindi un evento può avere 0 o 1 referente
public class Evento
{
[Key]
[ScaffoldColumn(false)]
public int EventoID { get; set; }
public virtual Referente Referente { get; set; }
}

public class Referente
{

[ForeignKey("Evento")]
public int ReferenteID { get; set; }
public string Nome { get; set; }
public string Cognome { get; set; }
public virtual Evento Evento { get; set; }
}

quando provo ad eliminare un evento con questo codice:

public void EventiList_DeleteItem(int EventoID, ModelMethodContext context)
{
using (_db)
{
var item = _db.ListEventi.Find(EventoID);
_db.ListEventi.Remove(item);
try
{
_db.SaveChanges();
}
}


ricevo questo errore
The DELETE statement conflicted with the REFERENCE constraint "FK_dbo.Referentes_dbo.Eventoes_ReferenteID". The conflict occurred in database "GIVDB", table "dbo.Referentes", column 'ReferenteID'.
The statement has been terminated.

ma il cascade delete non dovrebbe essere automatico così come ho definito le classi ?
724 messaggi dal 11 febbraio 2013
Non vedo dove hai configurato WillCascadeOnDelete(true)

Da quello che vedo hai solo esplicitato la Fk (la navigtion property)
Modificato da jjchuck il 27 novembre 2018 14.51 -
213 messaggi dal 03 ottobre 2006
Ho provato con questa istruzione

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Evento>()
.HasOptional(a => a.Referente)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
}

ma con questa ricevo il seguente errore anche solo richiamando la pagina che mostra la gridview degli eventi in cui avrei il pulsante elimina in ogni riga

Referente_Evento_Source: : La molteplicità non è valida in Role 'Referente_Evento_Source' nella relazione 'Referente_Evento'. Poiché Dependent Role fa riferimento alle proprietà chiave, il limite superiore della molteplicità di Dependent Role deve essere '1'.
724 messaggi dal 11 febbraio 2013
Mi dispiace non poter fare una prova
Magari domani
Cmq qui hai visto?
http://www.entityframeworktutorial.net/code-first/cascade-delete-in-code-first.aspx
213 messaggi dal 03 ottobre 2006
Praticamente è un mio sito di riferimento costante, ho scritto il codice seguendo proprio quelle indicazioni ma l'ultimo errore che mi appare mi spiazza perchè ora che ho indicato nel fluent api che voglio fare il cascade delete non capisco dove posso trovare Dependent Role di cui parla l'errore e che sembra essere impostata con un limite di molteplicità superiore a 1...
Non so proprio dove cercare questa cosa

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.