字段列表中的未知列 - 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 语句中使用它,它会失败。为什么会这样?

更新:

这似乎只发生在我枚举列表时

字段列表中的未知列 - MySQL 更改后

找到了答案!我不完全确定为什么会发生错误!无论如何。。

我有两个实体:

标头和组。

我的标头实体中有一个外键,它创建了一个与组的链接。它说一个标题可以有一个组。经过我审查,这是不正确的。一个标头可以有多个组。所以我从这里更改了外键:

public virtual Group Group { get; set; }

自:

public ICollection<Group> Groups {get; set; }

然后这奏效了。但是,我没有提到组,所以我不确定为什么这会引发错误。如果有人知道,请在评论中告诉我。