索引已存在于具有数据批注的 EF 4.3 代码优先错误中

本文关键字:代码 错误 EF 于具 存在 数据 索引 | 更新日期: 2023-09-27 18:33:01

我正在尝试使用带有数据注释的代码优先使用实体框架 4.3 创建计费数据库,每次尝试创建数据库时都会收到错误。以下是我正在处理的对象:

public class ClientBase
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int ClientID { get; set; }
    [Required]
    public string ClientName { get; set; }
    [Required]
    public bool IsActive { get; set; }
    [Required]
    public string ClientContactName { get; set; }
    [Required]
    public string ClientContactEmail { get; set; }
    public virtual List<PropertyBase> Communities { get; set; }
}
public class PropertyBase
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int PropertyID { get; set; }
    [ForeignKey("Client")]
    public int ClientID { get; set; }
    [Required, EnumDataType(typeof(BillingFrequency))]
    public BillingFrequency PropertyBillingFrequency { get; set; }
    [Required]
    public bool IsActive { get; set; }
    [Required]
    public string PropertyName { get; set; }
    public string PropertyStreet { get; set; }
    public string PropertyCity { get; set; }
    public string PropertyState { get; set; }
    public int PropertyZipCode { get; set; }
    public virtual ClientBase Client { get; set; }
}

无论我尝试做什么,我总是收到此错误:

The operation failed because an index or statistics with name 'IX_ClientID' already exists on table 'Property'.

我已经看到了Fluent API的这个问题的解决方案,但我还没有找到数据注释的解决方案。

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

编辑:这是DbContext中的代码:

public DbSet<ClientBase> ClientBases { get; set; }
public DbSet<PropertyBase> PropertyBases { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    }

索引已存在于具有数据批注的 EF 4.3 代码优先错误中

修复了它。事实证明,我忘记了我创建的另一个类与 ClientBase 有外键关系。我忘了把它作为一个虚拟属性带入客户群,实体框架对我不满意。当我包括它时,它工作得很好。

谢谢你们的帮助!