Итак, я пытался получить что-то с ядром EF. Я делаю код в первую очередь, так как это лучше для меня (я предпочитаю также, потому что пользователям не требуется предоставлять базу данных). В любом случае, у меня будет большая база данных с множеством связей, поэтому я должен использовать внешние ключи.
Однако коллекция внешнего ключа всегда равна нулю, даже если в базе данных она связана. Я получил эти 2 модели:
Пользователь:
[Table("users")]
public class User
{
[Key]
[Column("id")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Column("name")]
[StringLength(15, MinimumLength =2)]
[Required]
public string Name { get; set; }
[Column("password")]
[StringLength(100)]
[Required]
public string Password { get; set; }
[Column("email")]
[StringLength(30, MinimumLength =6)]
[Required]
public string Email { get; set; }
public List<UserActivityPoints> Activitypoints { get; set; }
}
UserActivityPoints:
[Table("activitypoints")]
public class UserActivityPoints
{
[Key]
[Column("type")]
public int Type { get; set; }
[Column("amount")]
public int Amount { get; set; }
[Key]
[Column("user_id")]
public User User { get; set; }
}
Итак, одна вещь, которая уже была странной, заключается в том, что в базе данных столбец user_id
становится UserId
, однако он правильно связан с пользователями, как показано ниже:
Рисунок PHPMyAdmin, показывающий, что он правильно связан
В контексте моей базы данных у меня есть следующий код:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>().ToTable("User");
modelBuilder.Entity<UserActivityPoints>().ToTable("activitypoints");
}
Я запускаю следующий код:
var i = ProductionDbContext.GetInstance().Users.Find(1).Activitypoints;
Я получил запись, показанную на следующем рисунке:
Запись добавлена в базу данных
Однако, когда я отлаживаю, i
всегда равен нулю, даже если у пользователя 1 есть запись в таблице баллов активности. Я что-то делаю не так или я что-то забываю?