字段列表中的未知列 - MySQL 更改后
本文关键字:MySQL 列表 未知 字段 | 更新日期: 2023-09-27 18:34:55
我有一个查询,它在进行几次连接后提取一些数据,当应用程序使用 SQL Server 时,这工作正常。但是,在转移到MySQL后,我遇到了一些问题。
例如,我不断收到错误"未知列Extent.Group_ClientID"。我已经确定了发生此错误的行,但我不明白为什么。
实体:
[Table("tblsupplier")]
public partial class Supplier
{
[Key][Column(Order = 0)]
public int ClientID { get; set; }
[Key][Column(Order = 1)]
public int SupplierID { get; set; }
[StringLength(50)]
public string AccountNo { get; set; }
[StringLength(100)]
public string SupplierName { get; set; }
public string DisplayName {
get {
return this.SupplierName + " (" + this.AccountNo + ")";
}
}
public virtual Client tblClient { get; set; }
}
查询:
public IQueryable<Supplier> GetAllSuppliersByClientWithClaims(int ClientID, List<int> WrittenOffIDs) {
return (from s in alliance.Suppliers
where s.ClientID == ClientID
join h in alliance.Headers
on new { a = s.ClientID, b = s.SupplierID }
equals new { a = h.ClientID, b = h.SupplierID }
join d in alliance.Details
on new { h.ClientID, h.ClaimID }
equals new { d.ClientID, d.ClaimID }
join r in alliance.Reviews
on new { h.ClientID, h.ReviewID }
equals new { r.ClientID, r.ReviewID }
where r.ReviewPeriodID != 0
where d.SplitLine == false
where !WrittenOffIDs.Contains((int)d.WrittenOffID)
select s).Distinct().OrderBy(r => r.SupplierName);
}
方法:
public string GetSupplierAutoComplete(int ClientID) {
DashboardViewModel model = new DashboardViewModel();
GeneralMethods GeneralHelpers = new GeneralMethods(reviewPeriodRepo, supplierGroupRepo, detailRepo);
model.Suppliers = supplierRepo.GetAllSuppliersByClientWithClaims(ClientID, GeneralHelpers.GetWrittenOffCodes(ClientID));
//Fails here
return JsonConvert.SerializeObject(model.Suppliers.Select(r => r.DisplayName), Formatting.Indented);
}
但是,我已经做了一些尝试,我发现查询中的一个位置导致了这个问题。 where d.SplitLine == false
.现在在数据库中,SplitLine 是一个 Tinyint。正如建议的那样,因为这是 MySQL 的布尔类型。现在,如果我拉一个"分割线",它将根据 0 或 1 返回 true 或 false。而如果我在 where 语句中使用它,它会失败。为什么会这样?
更新:
这似乎只发生在我枚举列表时
找到了答案!我不完全确定为什么会发生错误!无论如何。。
我有两个实体:
标头和组。
我的标头实体中有一个外键,它创建了一个与组的链接。它说一个标题可以有一个组。经过我审查,这是不正确的。一个标头可以有多个组。所以我从这里更改了外键:
public virtual Group Group { get; set; }
自:
public ICollection<Group> Groups {get; set; }
然后这奏效了。但是,我没有提到组,所以我不确定为什么这会引发错误。如果有人知道,请在评论中告诉我。