从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);
}
答案 0 :(得分:0)
事实证明,我现在需要在上面的WithMany
中明确声明导航属性。
这解决了我的问题:
modelBuilder.Entity<User>()
.HasRequired(u => u.Account)
.WithMany(a => a.Users)
.HasForeignKey(u => u.AccountId);