Я работаю с 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);
}
Я был у него довольно долгое время и действительно не могу понять, почему это не работает. Если я не засеваю базу данных, проблем нет. Посещение базы данных без создания пользователя также не дает мне никаких проблем, но как только я попытаюсь создать пользователя, это произойдет. Не думайте, что это имеет какое-либо отношение к тому, как отношения связаны друг с другом, я удалил каскадные удаления.