Я использую последний подход Entity Framework Core Database First с MySql.
Поставщик базы данных:
Pomelo.EntityFrameworkCore.MySql
Таким образом, я предполагаю, что весь сгенерированный код должен быть найден, проблема должна быть в моем собственном коде.
Я использую функцию лесов базы данных для генерации моих классов сущностей базы данных и класса dataContext.
Есть2 таблицы: Пользователь, Роль.
Отношение: 1 пользователь принадлежит 1 роли.
При создании пользователя я передаю идентификатор роли и устанавливаю его roleId, например:
user.RoleId = roleId;
db.SaveChanges();
Я ожидал увидеть user.Role со значением после SaveChanges (), но этого не происходит.
Я что-то упустил?
Обновление
Я попытался извлечь сущность Role, выполнив поиск по roleId, а затем назначил извлеченную сущность Role для user.Role и сохранил:
var role = GetRoleById(user.RoleId);
user.Role = role ?? throw new AppException("User Role is not found");
Пока что после SaveChanges () изатем в следующий раз, когда запрос API приходит кизвлеките пользователя, пользователь все еще имеет значение только в user.RoleId, но user.Role имеет значение null.
Пожалуйста, помогите.
Обновление 2
Класс пользователя:
modelBuilder.Entity<User>(entity =>
{
entity.ToTable("user");
entity.HasIndex(e => e.ApartmentId)
.HasName("user_apartment_fk_idx");
entity.HasIndex(e => e.RoleId)
.HasName("roleId");
entity.Property(e => e.Id)
.HasColumnName("id")
.HasColumnType("varchar(36)");
entity.Property(e => e.RoleId)
.HasColumnName("roleId")
.HasColumnType("varchar(36)");
entity.HasOne(d => d.Role)
.WithMany(p => p.User)
.HasForeignKey(d => d.RoleId)
.HasConstraintName("user_ibfk_1");
});