имейте проблемы посев и создание базы данных, соответствующей моим потребностям. У меня есть 2 объекта; Пользователь и отдел. Пользователь требует наличия отдела, а отдел может иметь много пользователей, но в то же время Департаменту требуется, чтобы один пользователь был его департаментом. Я могу понять, как я могу настроить это, каждая попытка привела к исключениям различного рода.код посева первая текущая база данных api EF кодовые ошибки
Вот мой контекст:
public class FravaerContext : DbContext
{
public FravaerContext() : base("name=DefaultConnection")
{
Database.SetInitializer(new DBInitializer());
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().HasRequired<Department>(u => u.Department).WithMany(d => d.Users).WillCascadeOnDelete(false);
modelBuilder.Entity<Department>().HasRequired(d => d.DepartmentChief);
//modelBuilder.Entity<Absence>().HasRequired<User>(a => a.User).WithMany(u => u.Absences).WillCascadeOnDelete(false);
base.OnModelCreating(modelBuilder);
}
public DbSet<Absence> Absences { get; set; }
public DbSet<Department> Departments { get; set; }
public DbSet<User> Users { get; set; }
}
public class DBInitializer : DropCreateDatabaseAlways<FravaerContext>
{
protected override void Seed(FravaerContext context)
{
for (int i = 1; i <= 4; i++)
{
User chief = new User() {Id = i, Absences = new List<Absence>(), Email = $"chief{i}@chief.dk", FirstName = $"Chief{i}",LastName = $"Chiefsen{i}",Password = "admin",UserName = ""+i,Role = Role.DepartmentChief};
Department d = new Department() {Id = i, Users = new List<User>() { chief }, DepartmentChief = chief };
chief.Department = d;
context.Departments.Add(d);
}
base.Seed(context);
}
}
И мои сущности (AbstractEntity предоставляет только идентификатор сущностей-классов):
public class Department : AbstractEntity
{
public List<User> Users { get; set; }
public User DepartmentChief { get; set; }
}
public class User : AbstractEntity
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public List<Absence> Absences { get; set; }
public Department Department { get; set; }
public Role Role { get; set; }
}
Почему вы не вызвали 'SaveChanges' в методе' Seed'? –
Мне не нужно. Ive теперь это работает, и я никогда не использую save changes :) – Bille