Сначала ошибка в коде Entity Framework 4.3 - индекс уже существует - PullRequest
3 голосов
/ 23 февраля 2012

Все работало нормально в предыдущих версиях, но теперь в 4.3 я получаю эту ошибку:

Исключение типа 'System.Data.SqlClient.SqlException' произошло в EntityFramework.DLL, но не было обработано вкод пользователя

Дополнительная информация: операция не выполнена, так как в таблице «Пользователи» уже существует индекс или статистика с именем «IX_Id».


Таблица пользователей имеет идентификаторсвойство и является первичным ключом, но я не использую код или атрибуты где-либо еще для создания дополнительного индекса ??

Модель пользователя:

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

    public virtual Settings Settings { get; set; } /* 1-1 */

    public virtual Profile Profile { get; set; } /* 1-1 */
    public virtual Account Account { get; set; } /* 1-1 */


}

Здесь происходит сбой в моем OnModelCreating (DbModelBuildermodelBuilder)

          modelBuilder.Entity<User>().HasRequired(u => u.Settings).WithRequiredDependent();
        modelBuilder.Entity<User>().HasRequired(u => u.Profile).WithRequiredDependent();
        modelBuilder.Entity<User>().HasRequired(u => u.Account).WithRequiredDependent();

Обновление: просто исправлено с помощью WithRequiredPrincipal вместо WithRequiredDependent.Не уверен, почему это отличается в 4.3

1 Ответ

1 голос
/ 01 июня 2012

Это ошибка в EF 4.3.Это будет исправлено в EF5 RTM.Для получения дополнительной информации, включая обходной путь, см. Этот вопрос: Необработанное исключение после обновления до Entity Framework 4.3.1

...