簡體   English   中英

實體框架核心查詢左聯接未出現

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM