[英]Unable to cast object of type exception
我正在使用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);
}
我已经花了很长时间了,真的无法弄清楚为什么它不起作用。 如果我不播种数据库,那么不会有任何问题。 在不创建用户的情况下播种数据库也不会给我带来任何麻烦,但是一旦我尝试创建用户,就会发生这种情况。 认为与关系如何循环无关,我删除了级联删除。
万一有人遇到相同的问题,删除多对多级联删除约定就可以了。 只需将此代码添加到上下文类中
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<ManyToManyCascadeDeleteConvention>();
base.OnModelCreating(modelBuilder);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.