[英]Entity Framework Core query left join not appears
這是我的DBContext
modelBuilder.Entity<Solicitud>(entity =>
{
entity.Property(e => e.Id).ValueGeneratedNever();
entity.HasOne(d => d.IdComentariosNavigation)
.WithMany(p => p.Solicitud)
.HasForeignKey(d => d.Id)
.OnDelete(DeleteBehavior.ClientSetNull);
});
modelBuilder.Entity<SolicitudRevisionComentarios>(entity =>
{
entity.Property(e => e.id).ValueGeneratedNever();
entity.Property(e => e.id_solicitud)
.IsRequired()
.HasMaxLength(4)
.IsUnicode(false);
entity.Property(e => e.motivo)
.IsRequired()
.HasMaxLength(300)
.IsUnicode(false);
});
這是我的控制器
var result = new PagedCollectionResponse<SolicitudViewModel>();
IEnumerable<Solicitud> items;
items = _context.Solicitud.Include(p => p.IdEstatusNavigation).Include(p => p.IdComentariosNavigation).Where(p => p.Id == filterModel.Id);
這是我的模特
public partial class Solicitud : IAuditableEntity
{
public int Id { get; set; }
public virtual SolicitudRevisionComentarios IdComentariosNavigation { get; set; }
}
public class SolicitudRevisionComentarios
{
public int id { get; set; }
public int id_solicitud { get; set; }
public string motivo { get; set; }
}
我想做的SQL查詢是下一個
SELECT [p].*, [p.Comentarios].*, [p.Estatus].*
FROM [Solicitud] AS [p]
INNER JOIN [CatalogoEstatus] AS [p.Estatus] ON [p].[IdEstatus] = [p.Estatus].[Id]
LEFT JOIN [SolicitudRevisionComentarios] AS [p.Comentarios] ON [p].[Id] = [p.Comentarios].[id]
WHERE [p].[Id] = 666 --this is an example
但是,出現下一個查詢
SELECT [p].*, [p.Comentarios].*, [p.Estatus].*
FROM [Solicitud] AS [p]
INNER JOIN [CatalogoEstatus] AS [p.Estatus] ON [p].[IdEstatus] = [p.Estatus].[Id]
INNER JOIN [SolicitudRevisionComentarios] AS [p.Comentarios] ON [p].[Id] = [p.Comentarios].[id]
WHERE [p].[Id] = 0 --this is an example
當根據ID存在與另一個表相關的值時,將使用SolicitudRevisionComentarios
。 如果這些ID在SolicitudRevisionComentarios
中不存在,則返回null。 但是我不都返回空查詢
這是帶有Microsoft .NET Core 2.2的ASP.NET實體框架核心Web服務
問題是您期望Solictud和Comments之間的關系為1到0/1,但是您的架構是1對多。 模式中的什么限制了多個具有相同id_Solictud值的SolictudRevisionCommentario記錄?
對於Solictud僅具有1條注釋,則需要形成多對一關系或1-to-0 / 1。
多對一將在Solicitud上具有一個可空的SolictudRevisionCommentario ID。
1-to-0 / 1將在注釋表中看到id_Solictud是PK。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.