Это может произойти, если вы не указали никакой конфигурации для сопоставления отношений между пользователем и офисом.Вот пример класса конфигурации
public class UserConfiguration : EntityTypeConfiguration<User>
{
public LocationConfiguration()
{
HasKey(a => a.Id);
HasMany(user => user.OfficeUsers).WithOptional(officeuser => officeuser.User).
HasForeignKey(officeuser => officeuser.UserId);
}
}
и добавьте эту конфигурацию в свой контекст следующим образом
public class YourContext : DbContext
{
// your DBSets and contructors, etc
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfiguration());
base.OnModelCreating(modelBuilder);
}
}
РЕДАКТИРОВАТЬ
попробуйте удалить данныеаннотацию "[ForeignKey (" Role ")]", а затем добавьте конфигурацию в класс Role следующим образом.А также добавьте виртуальное ключевое слово в свойство Role в классе OfficeUser
public class RoleConfiguration : EntityTypeConfiguration<Role>
{
public LocationConfiguration()
{
HasKey(a => a.RoleId);
HasMany(role =>role.OfficeUsers).WithOptional(officeuser => officeuser.Role).
HasForeignKey(officeuser => officeuser.OfficeRoleId);
}
}
EDIT
, объявите OfficeRoleId как
public int? OfficeRoleId { get; set; }
Когда вы запрашиваетеOfficeUser, вы можете использовать метод ниже, чтобы использовать отложенную загрузку
YourQuery().Include(officeuser => officeuser.Role);
надеюсь, вы понимаете синтаксис С уважением