2012-03-30 71 views
4

先使用EF代码4.3我试图使用必需的关系和必需的可选关系为对象树建模。EF代码优先错误“指定的索引已经存在。[IX_Id]”对象树

下面是这些类

public class Top 
{ 
    public int Id { get; set; } 
    public virtual Middle Middle { get; set; } 
} 

public class Middle 
{ 
    public int Id { get; set; } 
    public virtual Child Child { get; set; } 
} 

public class Child 
{ 
    public int Id { get; set; } 
} 

这里的简单表示是OnModelCreating代码

modelBuilder.Entity<Top>().HasRequired(t => t.Middle).WithRequiredPrincipal().WillCascadeOnDelete(); 
modelBuilder.Entity<Middle>().HasRequired(t => t.Child).WithOptional().WillCascadeOnDelete(); 

这产生错误 “指定的索引已经存在。[IX_Id]”上SQLCE

检查数据库模式后,两个model binder流利API配置行都会在选项卡上创建索引IX_Id米德尔斯。

有谁知道如何解决这个问题?

有没有办法设置索引名称?

谢谢! Pascal

+0

您是否试图实现一对一的关系? – 2012-03-31 02:21:30

+0

实际上是一对一的 – PascalN 2012-03-31 02:27:00

回答

0

使用此代码;

public class Top 
{ 
    public int Id { get; set; } 

    public int MiddleId { get; set; } 

    [ForeignKey("MiddleId")] 
    public virtual Middle Middle { get; set; } 
} 

public class Middle 
{ 
    public int Id { get; set; } 

    public int ChildId { get; set; } 

    [ForeignKey("ChildId")] 
    public virtual Child Child { get; set; } 
} 

public class Child 
{ 
    public int Id { get; set; } 
}