根据我看过的许多LINQ示例,我使用类似下面的代码创建自己的数据上下文和表:
class MyDatabase : DataContext {
public Table<Widget> Widgets;
public Table<Car> Cars;
public MyDatabase (string connection) : base(connection) { }
}
但是对于每个桌子(小部件,汽车等),我都会收到警告字段'TableName'永远不会被分配。我在Google上找不到任何有这个问题的人。我不觉得我做错了什么,因为我只是复制了我在不同地方看过的LINQ示例。这个警告怎么了?它警告我一个真正的问题吗?或者我错过了什么?
答案 0 :(得分:3)
是的,他们是虚假的。*
在this other question about how DataContext
works中,我们了解到DataContext
的构造函数使用反射在运行时填充字段。因此,Visual Studio会根据编译时的知识向您发出警告。它不知道这些字段最终会在消费之前填充。
*根据其他人在SO上发表的评论回答。甚至可能是错的!
答案 1 :(得分:0)
警告有效,因为您已为小部件和汽车创建了一个定义但未分配它们。在构建数据上下文时,这应该自行处理。你最终会引用它们。
答案 2 :(得分:0)
您可以在声明后将它们指定为null来解决此问题。
评论回复 - 这不必与声明在同一行 - 就在声明之后和使用之前的任何地方。相同的行是常见的,通常用于初始化器,这是需要的,以及编译器抱怨的原因。