使用LINQ to SQL时,这是一个虚假的警告吗?

时间:2010-02-01 16:09:17

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

根据我看过的许多LINQ示例,我使用类似下面的代码创建自己的数据上下文和表:

class MyDatabase : DataContext {
  public Table<Widget> Widgets;
  public Table<Car> Cars;

  public MyDatabase (string connection) : base(connection) { } 
}

但是对于每个桌子(小部件,汽车等),我都会收到警告字段'TableName'永远不会被分配。我在Google上找不到任何有这个问题的人。我不觉得我做错了什么,因为我只是复制了我在不同地方看过的LINQ示例。这个警告怎么了?它警告我一个真正的问题吗?或者我错过了什么?

3 个答案:

答案 0 :(得分:3)

是的,他们是虚假的。*

this other question about how DataContext works中,我们了解到DataContext的构造函数使用反射在运行时填充字段。因此,Visual Studio会根据编译时的知识向您发出警告。它不知道这些字段最终会在消费之前填充。

*根据其他人在SO上发表的评论回答。甚至可能是错的!

答案 1 :(得分:0)

警告有效,因为您已为小部件和汽车创建了一个定义但未分配它们。在构建数据上下文时,这应该自行处理。你最终会引用它们。

答案 2 :(得分:0)

您可以在声明后将它们指定为null来解决此问题。

评论回复 - 这不必与声明在同一行 - 就在声明之后和使用之前的任何地方。相同的行是常见的,通常用于初始化器,这是需要的,以及编译器抱怨的原因。