使用Code First从Entity Framework 4.1升级到4.3时与Fluent-API不兼容

时间:2012-08-03 21:24:32

标签: entity-framework-4

从EF 4.1升级到4.3后,我突然收到以下错误。

  

内部异常:System.Data.SqlClient.SqlException(0x80131904):操作失败,因为表'User'上已存在名为'IX_AccountId'的索引或统计信息。

以下是创建此错误的相关代码。

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

    }

1 个答案:

答案 0 :(得分:0)

事实证明,我现在需要在上面的WithMany中明确声明导航属性。

这解决了我的问题:

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