2014-03-06 45 views
0

我有以下兩類級聯刪除代碼第一實體框架存在本身(5.0版本)

1類:

[Table("players")] 
public class Player 
{ 
    [Key, Column("id"), DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    <summary> 
    /// Video Location w.r.t. Current Screen (Top) 
    /// </summary> 
    [Column("top")] 
    public double Top { get; set; } 
    /// <summary> 
    /// Video Location w.r.t. Current Screen (Width) 
    /// </summary> 
    [Column("width")] 
    public double Width { get; set; } 
    /// <summary> 
    /// Video Location w.r.t. Current Screen (Height) 
    /// </summary> 
    [Column("height")] 
    public double Height { get; set; } 




    [Column("group_id")] 
    public int group_id { get; set; } 

    [ForeignKey("group_id")] 
    public Group Group { get; set; } 
} 

而我的另一個類是2 類:

[Table("groups")] 
    public class Group 
    { 
     [Key, Column("id"), DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
      public int Id { get; set; } 

      [Column("guid")] 
      public string Guid { get; set; } 

      [Column("is_deleted")] 
      public bool IsDeleted { get; set; } 

      [Column("name")] 
      public string Name { get; set; } 

    } 

我有問題從數據庫中刪除組條目。 每當我刪除任何組時,所有屬於該組的玩家都會自動刪除。 我使用Code-First與實體框架(5.0)。 任何幫助表示讚賞。

+0

聽起來你的數據庫中的FKs設置不正確,關係走錯了方向。如果cascacde delete被設置,那麼如果FK錯誤,你將會遇到麻煩。如果你不使用FK,那麼當然你應該。希望你沒有使用實體框架來設計你的數據庫。 – HLGEM

回答

0

您需要專門映射該場景。你可以做到這一點,像這樣:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    {    
     modelBuilder.Entity<Player>().HasOptional(x => x.Group).WithMany().WillCascadeOnDelete(false); 
    } 

這將會對玩家的組選這意味着它可以存在,而不到一組的引用,也將指導您的上下文不這樣做級聯刪除。