В моем проекте API у меня есть
public class Team
{
[Key]
public long Id { set; get; }
[Required]
public TeamSettings TeamSettings { get; set; }
}
public class TeamSettings
{
[Key]
[Required]
[Column("TeamSettingsId")]
public long Id { set; get; }
[Required]
[ForeignKey("TeamId")]
public long TeamId { get; set; }
[Required]
public Team Team { set; get; }
}
Когда я использую
var team = await TeamRepo.GetAsync(t => t.Id == teamId, includes);
, я вижу на своем SQL Server Profiler левое соединение, а не внутреннее соединение.
Я попытался удалить аннотации и перейти к беглому так:
modelBuilder.Entity<Team>()
.HasOne(t => t.TeamSettings)
.WithOne(ts => ts.Team)
.HasForeignKey<TeamSettings>(ts => ts.TeamId);
Но все же, все, что я получаю, это левое соединение.
Поскольку TeamSettings создается всегда для какая-нибудь команда и не может быть nullable, разве не следует использовать внутреннее соединение?