0

EF 4.1 から 4.3 にアップグレードした後、突然次のエラーが発生し始めました。

内部例外: System.Data.SqlClient.SqlException (0x80131904): 'IX_AccountId' という名前のインデックスまたは統計が既にテーブル 'User' に存在するため、操作は失敗しました。

以下は、このエラーを作成する関連コードです。

public class Account {

    public Account() {
        Users = new HashSet<User>();
    }

    [Key]
    public int AccountId { get; set; }

    public virtual ICollection<User> Users { get; private set; }

}

public class User {

    [Key]
    public int UserId { get; set; }

    public int AccountId { get; set; }

    public virtual Account Account { get; set; }
}


protected override void OnModelCreating(DbModelBuilder modelBuilder) {

        modelBuilder.Entity<Account>()
            .HasMany<User>(a => a.Users)
            .WithRequired()
            .HasForeignKey(u => u.AccountId);

        modelBuilder.Entity<User>()
            .HasRequired(u => u.Account)
            .WithMany()
            .HasForeignKey(u => u.AccountId);

    }
4

1 に答える 1

0

上記のナビゲーション プロパティを明示的に宣言する必要があることがわかりました WithMany

これで問題が解決しました:

        modelBuilder.Entity<User>()
            .HasRequired(u => u.Account)
            .WithMany(a => a.Users)
            .HasForeignKey(u => u.AccountId);
于 2012-08-03T21:24:31.957 に答える