我有一个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时,我得到的是:
所以
[t].[InventoryProcessAssetId]
应该是
[t].[InventoryProcessId]
这就是为什么没有带来任何数据。
知道怎么解决这个问题吗?