我已经对此进行了研究,但我没有找到任何解决方案。我正在使用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”