【问题标题】:LINQ to SQL: Invalid column name 'DepartureGate', even though the column existsLINQ to SQL:列名“DepartureGate”无效,即使该列存在
【发布时间】:2013-07-18 15:16:07
【问题描述】:

我绝对不明白这一点。该列存在于表中,我已确保应用程序正在对正确数据库中的正确表执行查询,但它仍然报告它是无效的列名。

我正在运行 NET 4.0,SQL Server 2008 Express Edition。有没有人有类似的经历?

对同一数据库中同一表中的任何其他列名执行查询非常出色。我今天添加了这个专栏,但由于某种原因我的申请拒绝承认这个专栏的存在。

相关列定义:

相关代码:

(from x in flightDataContext.FlightDatas
where x.FlightDataId == FlightDataID && x.Departure == true
select new
{
  x.ArrivalStationCode,
  x.ArrivalStationName,
  x.DepartureTime,
  x.DepartureGate
}).SingleOrDefault();

【问题讨论】:

  • 一些代码?什么错误?
  • 请粘贴一些代码和您的表架构...
  • 错误如标题所示。
  • @Maritim ,向我们展示您的 LINQ 查询
  • 您是否在尝试选择表格之前对其进行分组?让我们看看你正在使用的 linq

标签: c# sql linq sql-server-2008 linq-to-sql


【解决方案1】:

我也遇到了同样的问题。您可以尝试以下解决方案。

您应该在数据库更改后更新您的类(将您的表拖放到 linq to sql 文件),以便可以使用对象名称访问该列。如果仍然存在问题,那么 您保存在列中的值大于为列指定的大小。如果您的列是 varchar 类型,请尝试 varchar(MAX)。

【讨论】:

  • 我不知道出了什么问题,但可能是某处的一些错误定义或某处的一些拼写错误的参数。这并没有解决它,但它肯定被淘汰了。接受答案并感谢您推动我尝试此操作。
【解决方案2】:

当我遇到这个错误时,我发现我的一个模型对象上有一些虚假的[Key] 属性,而这些属性实际上并不是该对象表的唯一键定义的一部分。他们一直无害地坐在那里,直到我重构了另一个对象的关系。一旦我删除它们,关于列无效的错误就消失了。

【讨论】:

    【解决方案3】:

    试试这个。在此之前,删除表并再次将表拖到 DBML 文件上并保存 DBML。

    var flight=    flightDataContext.FlightDatas.SingleOrDefault(x=>x.FlightDataId == FlightDataID && x.Departure);
    

    现在您可以访问:

      flight.ArrivalStationCode,
      flight.ArrivalStationName,
      flight.DepartureTime,
      flight.DepartureGate
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多