LINQ to SQL:列名称“DepartureGate”无效,即使该列存在

时间:2013-07-19 10:51:36

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

我绝对不会这样。该列存在于表中,我已确保应用程序正在针对正确数据库中的正确表执行查询,并且仍然报告它是无效的列名。

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

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

相关栏目定义: enter image description here

相关代码:

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

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

现在您可以访问:

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