Я работаю над подходом EF Code First Web API. У меня есть несколько общих свойств, которые я решил сделать из этого общего класса и использовать его во всех моделях.
Теперь, когда я пытался обновить базу данных с помощью PMC, я получаю следующую ошибку:
Значение не может быть нулевым.
Имя параметра: entitySet
Но если я удаляю свойство общего класса в модели и делаю обновление, оно работает нормально.
Модель:
public class Employee
{
[Key]
public int EmployeeId { get; set; }
[Required, MaxLength(50)]
public string Name { get; set; }
public int Age { get; set; }
public DateTime DOB { get; set; }
public int City { get; set; }
public int State { get; set; }
public int Country { get; set; }
public ComFields DateTimeDetails { get; set; } //This is the line
[NotMapped]
public List<Employee> Employees { get; set; }
}
Общий класс:
public class ComFields
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public DateTime CreatedDate { get; set; }
public int? CreatedBy { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime ModifiedDate { get; set; }
public int? ModifiedBy { get; set; }
public bool Active { get; set; } = true;
}
Где я не прав? Дайте мне знать, если есть какой-то другой лучший способ справиться с такими сценариями.
Обновление:
Попытка переопределить метод seed для добавления значений,
protected override void Seed(ExerciseWebAPI.Context.DatabaseContext context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data.
context.Users.AddOrUpdate(x => x.UserId,
new Users { Name = "aaa", Password = "CA", Email = "c@c.com", MobileNumber = "1234567", Age = 31, CountryId = 1, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, CreatedBy = 0, ModifiedBy = 0, Active = true },
new Users { Name = "bbb", Password = "DA", Email = "a@a.com", MobileNumber = "1234987", Age = 31, CountryId = 2, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, CreatedBy = 0, ModifiedBy = 0, Active = true },
new Users { Name = "ccc", Password = "BA", Email = "e@e.com", MobileNumber = "9876543", Age = 31, CountryId = 5, CreatedDate = DateTime.Now, ModifiedDate = DateTime.Now, CreatedBy = 0, ModifiedBy = 0, Active = true }
);
}