Здравствуйте, есть два связанных класса-entity
User
Source
public class User {
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Guid { get; set; }
[Required]
public string Name { get; set; }
[ForeignKey("Company")]
public Guid? CompanyGuid { get; set; }
public virtual Company Company { get; set; }
}
Company
Source
public class Company {
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key]
[Required]
public Guid Guid { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<User> Users { get; set; }
public Company() {
Users = new List<User>();
}
}
Их
Context
Source
public class CompanyContext : DbContext
{
public CompanyContext (DbContextOptions<CompanyContext> options) : base(options) {
}
public DbSet<Company> Company { get; set; }
public DbSet<User> User { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder) {
modelBuilder.Entity<User>()
.HasOne(p => p.Company)
.WithMany(b => b.Users)
.HasForeignKey(p => p.CompanyGuid);
modelBuilder.Entity<Company>()
.HasMany(b => b.Users)
.WithOne();
}
}
В базе всё создаётся правильно, Foreign key присутствует. Данные в базе также присутствуют.
Но при выполнении следующего кода, я получаю User.Company = null
Source
User user = db.User.FirstOrDefault(x => x.Name == name);
if (user == null) {
// to do something
}
if (user.Company == null) {
// <- Company null хотя не должен быть.
}
Подскажите, пожалуйста, что я делаю не правильно.