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

时间:2016-02-17 13:01:24

标签: c# mysql linq entity-framework-6 mysql-connector

我有一个查询,它在进行几次连接后提取一些数据,当应用程序使用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语句中使用它,它将失败。为什么会这样?

更新:

当我枚举列表

时,似乎只会发生这种情况

1 个答案:

答案 0 :(得分:0)

找到答案!我不完全确定错误发生的原因!反正..

我有两个实体:

标题和小组。

我的标头实体中有一个外键,用于创建与组的链接。它说一个标题可以有一个组。在我审核之后,这是不正确的。一个标题可以有多个组。所以我改变了这个外键:

public virtual Group Group { get; set; }

要:

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

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