EF CF将一对一与一对多关系结合在一起

时间:2014-06-22 18:14:47

标签: c# entity-framework ef-code-first entity-relationship foreign-key-relationship

我已经对此进行了研究,但我没有找到任何解决方案。我正在使用SQL CE 4.0,我希望建立如下关系:

public class Process
{
   [Key]
   public int Id {get;set;}
   public string Name {get; set;}
   public int CurrentStageID {get;set;}

   [ForeignKey("CurrentStageID")]
   public virtual Stage CurrentStage {get;set;}

   public virtual ICollection<Stage> Stages {get;set;}
}

public class Stage
{
   [Key]
   public int Id {get;set;}
   public string Name {get; set;}
   public int ProcessId {get;set;}

   [ForeignKey("ProcessId")]
   public virtual Process Process {get;set;}
}

但是在数据库初始化期间我得到了Exception:

  

参照关系将导致不允许循环引用。 [约束名称= FK_dbo.Stages_dbo.Processes_ProcessId]

这种关系是否正确?

我也使用OnModelCreating()方法:

modelBuilder.Entity<Process>()
     .HasMany(p=>p.Stages)
     .WithRequired(s=>s.Process)
     .HasForeignKey(s=>s.ProcessId);

任何人都可以帮助我吗?

AD。 如果我添加.WillCascadeOnDelete(false);,我会得到:

  

在模型生成期间检测到一个或多个验证错误:

     

SQLCEEngine.Proces_Etapy ::多重性与关系“Process_Stages”中角色'Process_Stages_Source'中的引用约束冲突。       由于从属角色中的所有属性都是不可为空的,因此主要角色的多重性必须为“1”

0 个答案:

没有答案