2015-04-15 7 views
0

это ошибка, я получаю: «Введение FOREIGN KEY ограничения FK_dbo.RolePermissions_dbo.Permissions_Permission_ID на столе RolePermissions может вызвать циклы или несколько путей каскадных Указать ON УДАЛИТЬ NO ACTION или ON UPDATE NO ACTION или изменять другие. FOREIGN KEY. Не удалось создать ограничение или индекс. См. Предыдущие ошибки. "Code First каскадного выпуск

и вот мои классы:

public class Permission 
{ 
    [Key] 
    public int ID { get; set; } 

    [Required] 
    public int PermissionObjectId { get; set; } 
    public PermissionObject PermissionObject { get; set; } 

    [Required] 
    public int CategoryId { get; set; } 
    public Category Category { get; set; } 

    [Required] 
    public int ReadWriteId { get; set; } 
    public ReadWrite ReadWrite { get; set; } 

    public virtual ICollection<Role> Roles { get; set; } 
} 

public class Role 
{ 
    [Key] 
    public int ID { get; set; } 

    [Required] 
    public string Name { get; set; } 

    [Required] 
    public int CategoryId { get; set; } 
    public Category Category { get; set; } 

    public virtual ICollection<Permission> Permissions { get; set; } 

} 

public class Category 
{ 
    [Key] 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public int OrderID { get; set; } 

    public override string ToString() 
    { 
     return ID.ToString(); 
    } 
} 

что я сделал не так?

ответ

0

использование беглый api для комплект CascadeOndelete = fasle.

эта ссылка Может быть поможет вам: Link

0

Похоже EF пытается создать отношения какой-то между ролями и разрешениями (многие-ко-многим?), Но у вас также есть один-к - многие отношения для категории-роли и разрешения категории, которые также имеют включенное каскадное удаление.

Для иностранных ключевых отношений при использовании ключей в ненулевых или [Required], (например, CategoryId в обоих Role и Permission), каскадное удаление по умолчанию включена.