44 messaggi dal 17 maggio 2011
Ciao a tutti,

Mi trovo in questa situazione e non riesco a capire il perchè.

Se io creo come :
    public class ApplicationUser : IdentityUser
    {
        public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
        {
            // Tenere presente che il valore di authenticationType deve corrispondere a quello definito in CookieAuthenticationOptions.AuthenticationType
            var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
            // Aggiungere qui i reclami utente personalizzati
            return userIdentity;
        }
        public string Name { set; get; }
        public string Surname { set; get; }
        
        public int Society_Id { get; set; }
        [ForeignKey("Society_Id")]
        public virtual Society Society { get; set; }
    }


E
    public class Plant
    {
       ........
        [Required]
        public int Society_Id { get; set; }
        [ForeignKey("Society_Id")]
        public virtual Society Society { get; set; }
    }


Ottengo il seguente messaggio quando lancio Update-Database :

L'introduzione del vincolo FOREIGN KEY 'FK_dbo.AspNetUsers_dbo.Societies_Society_Id' nella tabella 'AspNetUsers' può determinare la creazione di cicli o più percorsi di propagazione. Specificare ON DELETE NO ACTION o ON UPDATE NO ACTION oppure modificare gli altri vincoli FOREIGN KEY.
Non è stato possibile creare il vincolo o l'indice. Vedere gli errori precedenti.
333 messaggi dal 05 novembre 2012
Ciao,

L'errore è generato a causa di una restrizione che esiste in SQL Server, in una tabella con più foreign key, solo una di queste può avere il cascade delete abilitato.

A fronte di questo...nel codice che hai postato non vedo nulla che giustifichi l'errore.

Detto questo, per disabilitare il cascade delete puoi agire a differrenti livelli...

Per tutte le fk del tuo contesto
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}


Per la singola fk
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
   modelBuilder.Entity<EntitaConFk>()
    // ... altre configurazioni della fk
    .WillCascadeOnDelete(false);
}


Guarda qui se vuoi approfondire l'argomento relazioni

/Ciao

Alessio

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.