2
我正在使用ASP.NET和EF 6.1。我试图用种子一些对象的数据库,但我得到以下异常:无法投射异常类型对象
Unable to cast object of type 'System.Collections.Generic.HashSet`1[B]' to type 'B'.
当我尝试创建一个使用用户管理器的用户。
所有的数据库初始化都是在种子方法中完成的。我简化了这些类,因为其中有些参数很多。
public class User : IdentityUser
{
public User() : base()
{
Bs = new HashSet<B>();
}
public Guid AId { get; set; }
public virtual A A { get; set; }
public virtual ICollection<B> Bs { get; set; }
}
public class A
{
public A()
{
Bs = new HashSet<B>();
Users = new HashSet<User>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public virtual ICollection<B> Bs { get; set; }
public virtual ICollection<User> Users { get; set; }
}
public class B
{
public B()
{
Users = new HashSet<User>();
}
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
public Guid AId { get; set; }
public virtual A A { get; set; }
public virtual ICollection<User> Users { get; set; }
}
protected override void Seed(myContext context)
{
var a = new A;
var b = new B;
A.Bs.Add(B);
context.As.Add(A);
var userStore = new UserStore<User>(context);
var userManager = new UserManager<User>(userStore);
var user = new User
{
UserName = "username",
A = a
};
userManager.Create(user, "password!");
user.Bs.Add(B);
base.Seed(context);
}
我一直在它的相当一段时间,真的不知道为什么这是行不通的。如果我不种子数据库,没有任何问题。在没有创建用户的情况下播种数据库也不会给我带来麻烦,但是一旦我尝试创建用户,就会发生这种情况。不要认为它与这些关系如何结合在一起有什么关系,我删除了级联删除。