EF代码第一个错误“对象树的指定索引已存在。[IX_Id]”

时间:2012-03-30 23:18:34

标签: entity-framework

首先使用EF代码4.3我正在尝试使用必需的关系和必需的可选关系来建模对象树。

以下是这些类的简单表示

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();

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

检查数据库模式后,两个模型绑定器流畅的API配置行都在表Middles上创建索引IX_Id。

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

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

谢谢! 帕斯卡

1 个答案:

答案 0 :(得分: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; }
}