代码之家  ›  专栏  ›  技术社区  ›  VAAA

.NET 6 EF Core-一至五月份的合作关系正在发挥作用

  •  0
  • VAAA  · 技术社区  · 2 年前

    我有一个LINQ表达式工作不正常,当我看到生成的SQL代码时,LEFT JOIN没有使用正确的外键。

    这是我的实体 InventoryProcessAsset :

    public class InventoryProcessAsset
        {
            [Key]
            public Int64 InventoryProcessAssetId { get; set; }
            public Int64 InventoryProcessId { get; set; }
            public string AssetId { get; set; }
            public string Epc { get; set; }
            public int LocationId { get; set; }
            public byte AssetStatus { get; set; }
            public bool IsActive { get; set; }
    
            public virtual Asset Asset { get; set; }
    
            public virtual ICollection<AssetIncident> Incidents { get; set; }
        }
    

    这是我的 AssetIncident 实体:

     public class AssetIncident
        {
            [Key]
            public long AssetIncidentId { get; set; }
            public string AssetId { get; set; }
            public DateTime IncidentDate { get; set; }
            public byte IncidentType { get; set; }
            public string? Notes { get; set; }
    
            public Int64? InventoryProcessId { get; set; }
    
            public virtual Asset Asset { get; set; }
    
            public virtual InventoryProcessAsset ProcessAsset { get; set; }
    
        }
    

    在我的modelBuilder中,我有以下关系:

      modelBuilder.Entity<InventoryProcessAsset>()
                    .HasMany<AssetIncident>(x => x.Incidents)
                    .WithOne(g => g.ProcessAsset)
                    .HasForeignKey(x=> x.InventoryProcessId);
    

    最后这是我的林克表达:

      var dbAssets = await _dbContext.InventoryProcessAssets
                                   .Where(i => i.InventoryProcessId == processId)
                                   .Include(a=> a.Incidents)
                                   .ToListAsync();
    

    当我看到生成的SQL时,我得到的是:

    enter image description here

    所以 [t].[InventoryProcessAssetId] 应该是 [t].[InventoryProcessId]

    这就是为什么没有带来任何数据。

    知道怎么解决这个问题吗?

    0 回复  |  直到 2 年前