0
我正在做一個MVC
Entity Framework 6
DataBase First
應用程序。MVC實體框架WillCascadeOnDelete不工作
我有兩個表.. Groups
和MemberGroups
,有一對多的關係。
Foreign Key can not be Null
當我將數據庫添加到我的應用程序。該.Edmx
與Context.cs
文件
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; }
}
在.tt
夾它被產生的class
爲每個表生成。
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; }
}
我試圖做一個Delete on cascade
...當我刪除一個組,我想刪除所有成員該組羣。 所以在OnModelCreating
在Context.cs
文件我添加everthing我發現爲了刪除級聯,但沒有工作。
這是我到目前爲止嘗試過的。
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);
下面是我用刪除它的代碼。
var master = _db.Set<Groups>().Include(m => m.GroupMembers).SingleOrDefault(m => m.Group_id == 2);
_db.Set<Groups>().Remove(master);
_db.SaveChanges();
我有以下的錯誤...
"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."
看來,它不是試圖刪除子記錄。它正在嘗試更新爲空
如何正確執行此操作?