Im bin ich ein MVC
Entity Framework 6
DataBase First
App.MVC Entity Framework WillCascadeOnDelete funktioniert nicht
Ich habe zwei Tabellen .. Groups
Und MemberGroups
, mit einer Beziehung eins zu vielen.
Foreign Key can not be Null
Wenn ich die Datenbank zu meiner Anwendung hinzufügen. Die .Edmx
wird mit der Context.cs
Datei erzeugt
public partial class PortalEntities : DbContext
{
public VIvaVoceEntities()
: base("name=PortalEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<GroupMembers> GroupMembers { get; set; }
public virtual DbSet<Groups> Groups { get; set; }
}
Unter .tt
Ordner Es ist die class
für jede Tabelle erstellt wurde.
public partial class Groups
{
public long Group_id { get; set; }
public string Name { get; set; }
public virtual ICollection<GroupMembers> GroupMembers { get; set; }
}
public partial class GroupMembers
{
public long MemberGroup_ID { get; set; }
public long Group_id { get; set; }
}
Ich versuche, ein Delete on cascade
zu tun ... Wenn ich eine Gruppe löschen, möchte ich alle Mitglieder in dieser Gruppe löschen. Also in OnModelCreating
in Context.cs
Datei füge ich alles hinzu, was ich gefunden habe, um auf Kaskade zu löschen, aber nichts funktioniert.
Hier ist was ich bisher versucht habe.
modelBuilder.Entity<Groups>()
.HasMany(e => e.GroupMembers)
.WithRequired(e => e.Groups)
.WillCascadeOnDelete(true);
---------------------------------
modelBuilder.Entity<Groups>()
.HasOptional(x => x.GroupMembers)
.WithOptionalDependent()
.WillCascadeOnDelete(true);
---------------------------------
modelBuilder.Entity<Groups>().HasMany(i => i.GroupMembers)
.WithOptional(i => i.Groups)
.HasForeignKey(i => i.Group_id)
.WillCascadeOnDelete(true);
---------------------------------
modelBuilder.Entity<Groups>()
.HasRequired(e => e.GroupMembers)
.WithMany()
.HasForeignKey(e => e.Group_id)
.WillCascadeOnDelete(true);
Hier ist der Code, den ich um es zu löschen verwenden.
var master = _db.Set<Groups>().Include(m => m.GroupMembers).SingleOrDefault(m => m.Group_id == 2);
_db.Set<Groups>().Remove(master);
_db.SaveChanges();
ich folgende Fehlermeldung haben ...
"The operation failed: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. When a change is made to a relationship, the related foreign-key property is set to a null value. If the foreign-key does not support null values, a new relationship must be defined, the foreign-key property must be assigned another non-null value, or the unrelated object must be deleted."
Es scheint, dass es nicht Kind versucht, Aufzeichnungen zu löschen. Es wird versucht, mit Null zu aktualisieren
Wie ist der richtige Weg, es zu tun.?