我有一个查询,它在进行几次连接后提取一些数据,当应用程序使用SQL Server时这很好用。但是在转移到MySQL之后我遇到了一些问题。
例如,我不断收到错误'Unknown column 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的布尔类型。现在,如果我拉出一个'SplitLine',它将根据0或1返回true或false。而如果我在where语句中使用它,它将失败。为什么会这样?
更新:
当我枚举列表
时,似乎只会发生这种情况答案 0 :(得分:0)
找到答案!我不完全确定错误发生的原因!反正..
我有两个实体:
标题和小组。
我的标头实体中有一个外键,用于创建与组的链接。它说一个标题可以有一个组。在我审核之后,这是不正确的。一个标题可以有多个组。所以我改变了这个外键:
public virtual Group Group { get; set; }
要:
public ICollection<Group> Groups {get; set; }
然后工作了。但是,我还没有提到群组,所以我不确定为什么这会引起错误。如果有人知道,请在评论中告诉我。