1

Я пытаюсь создать базу данных фактурирования с Entity Framework 4.3 с использованием кода First с аннотациями данных, и я получаю ошибку каждый раз, когда я пытаюсь создать свою базу данных , Вот те объекты, которые я имею дело с:Индекс уже существует ошибка в EF 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, но я не нашел его для Data Annotations.

Кто-нибудь знает, как это исправить?

EDIT: Вот код в 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); 
    } 
+0

Все это работает для меня. Я не понимаю, где в этой конфигурации появляется таблица «Свойство» *. – tzerb

+0

Yikes! Я забыл поставить [Таблица («Свойство») над классом PropertyBase. – IronMan84

+0

Может ли быть запущен триггер на SQL-сервере, который создал индекс? Я понятия не имею, откуда он (даже первый). – tzerb

ответ

1

Fixed его. Оказалось, что я забыл, что был еще один класс, который я сделал с отношением внешнего ключа к ClientBase. Я забыл привести это в ClientBase как виртуальную собственность, и Entity Framework не понравилась мне. Когда я включил его, он работал отлично.

Благодарим вас за помощь!