我首先使用EF代码生成多对多的关系。如下:
public class User
{
public User()
{
Categories = new Collection<Category>();
}
public int UserId { get; set; }
public string LastName { get; set; }
public ICollection<Category> Categories { get; set; }
}
和
public sealed class Category
{
public Category()
{
Users = new Collection<User>();
}
public string Name { get; set; }
public int Id { get; set; }
public ICollection<User> Users { get; set; }
}
我的Db上下文如下:
public DbSet<User> Users { get; set; }
public DbSet<Category> Categories { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasMany(b => b.Categories).WithMany(a => a.Users).Map(m => m.MapLeftKey("userId").MapRightKey("id"));
base.OnModelCreating(modelBuilder);
}
奇怪的问题是当我做简单的动作时:
_ctx.Categories.AsQueryable();
我收到以下错误:
约束'PK_dbo.Categories'由表'UserCategories'引用,外键约束'FK_dbo.CategoryUsers_dbo.Categories_id'。 无法删除约束。查看以前的错误。