当前位置: 首页 > 面试题库 >

强类型的DataContext如何工作?

皇甫卓君
2023-03-14
问题内容

这是我今天上午早些时候仍在深入探讨的问题,我仍然感到困惑。我正在为我的应用程序使用强类型的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>();
    }
  }
}

请注意包含partialGetTable。有partial必要吗?

我假设我的第一个示例通过最终调用起作用GetTable,但是这段代码从何而来呢?我的数据上下文类的字段如何填充数据?


问题答案:

如果它们不是属性,则唯一合乎逻辑的结论是基本构造函数已分配了它们。出乎意料,也许但并非不可能。

partial允许将多个代码文件合并成一个单一类; 你只需要它,如果你 已经 分开你的代码文件(通常为设计师)。

对反射器的一些挖掘表明,ctor调用private void InitTables(object schema),它 恰好 做到
(反射字段,通过分配它们GetTable(Type))。



 类似资料:
  • 我在Kotlin中有一个方法,它返回一个泛型列表的Rx可观察值: 因为Kotlin list特征定义为,Java将看到返回类型为。 是否有一种方法告诉Kotlin编译器,Java应该将其视为?

  • 本文向大家介绍Windows Powershell 变量的类型和强类型,包括了Windows Powershell 变量的类型和强类型的使用技巧和注意事项,需要的朋友参考一下 变量可以自动存储任何Powershell能够识别的类型信息,可以通过$variable的GetType().Name查看和验证Powershell分配给变量的数据类型。 会给数据分配一个最佳的数据类型;如果一个整数超出了32

  • 问题内容: 我遇到过一些链接,说Python是一种强类型的语言。 但是,我认为在强类型语言中你不能这样做: 我认为强类型语言在运行时不接受类型更改。也许我对强类型/弱类型的定义有误(或过于简单)。 那么,Python是强类型语言还是弱类型语言? 问题答案: Python是强大的动态类型。 强类型意味着值的类型不会以意外的方式改变。仅包含数字的字符串不会神奇地变成数字,就像Perl中可能发生的那样。

  • 我试图使用市场上没有的安装软件Eclipse在我的RAD上安装增强类反编译程序。安装后,我无法打开罐子,因为它提示一个错误,说“编辑器无法初始化”,见截图下面。 希望你能帮我。提前谢谢你们。

  • 问题内容: 如何在Python中将类成员变量限制为特定类型? 较长版本: 我有一个具有多个成员变量的类,这些成员变量在该类的外部设置。由于它们的使用方式,它们必须为特定类型,即int或list。 如果这是C ++,则只需将它们设为私有,然后在“ set”函数中进行类型检查。鉴于这是不可能的,是否有任何方法可以限制变量的类型,以便在为其分配了错误类型的值时在运行时发生错误/异常?还是我需要在使用它们

  • 当我点击我的颤振应用程序中的一个按钮时,我出现了一个错误。这里有人有解决方案吗?! 路线 争论 还有地图 完全错误 生成CategoryMalsScreen(脏,依赖项:[[U ModalScopeStatus],状态:[U CategoryMalsScreenState]时引发了以下错误:类型“String”不是类型“Map”的子类型 导致错误的相关小部件是:CategoryMalsScreen