【发布时间】:2010-02-01 19:40:17
【问题描述】:
这是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。 partial 有必要吗?
我假设我的第一个示例最终通过调用 GetTable 来工作,但是这段代码是从哪里来的?我的数据上下文类的字段如何填充数据?
【问题讨论】:
标签: c# sql linq linq-to-sql