这是对
my question from earlier this morning
但我还是很困惑。我正在为我的应用程序使用一个强类型的DataContext,尽管它发出警告,但它仍然可以神奇地工作。它是怎么做到的?
下面是一个通常用于使用LINQ to SQL连接到数据库的代码。
class MyDatabase : DataContext {
public Table<Widget> Widgets;
public Table<Car> Cars;
public MyDatabase (string connection) : base(connection) { }
}
即使它发出了警告,它也可以开箱即用。可以使用以下方法开始阅读:
using (var db = new MyDatabase(connectionString)) {
foreach (var w in db.Widgets)
Console.WriteLine(w);
}
Widgets
似乎是一个领域
MyDatabase
班级。在我的代码中,我没有将它分配给任何东西。但在其他地方,我正在读它,它有价值。为什么?
在Linq to SQL的其他示例中,包括由Visual Studio 2008的DBML布局工具生成的代码,数据上下文类可能如下所示:
public partial class MyDatabase : DataContext {
public Table<Widget> Widgets {
get {
return GetTable<Widget>();
}
}
}
注意包含
partial
和
GetTable
. 是
部分的
必要吗?
我假设我的第一个例子是通过调用
获得表
但这段代码是从哪里来的呢?如何用数据填充数据上下文类的字段?