gpt4 book ai didi

c# - 使用 C# 为 linqpad 创建 DynamicDataContextDriver

转载 作者:太空狗 更新时间:2023-10-29 21:50:59 26 4
gpt4 key购买 nike

我正在尝试为 linqpad 创建驱动程序并有问题:

当我创建 DynamicDataContextDriver 时,我必须创建类 TypedDataContext

  1. 我应该在里面放什么?
  2. 它将如何填充?
  3. 我可以控制它的填充方式吗?
  4. 如果我在这里使用对象数据库,有什么我必须记住的吗?

我找到了一些答案 here , 但我找不到上面所有的答案。

最佳答案

类型化数据上下文只是一个具有适合查询的属性/字段的类。这些属性/字段通常会返回 IEnumerables 或 IQueryables。例如:

public class TypedDataContext
{
public IEnumerable<Customer> Customers { get { ... } }
public IEnumerable<Order> Orders { get { ... } }
...
}

当您使用 Visual Studio 创建“LINQ to SQL 类”或“ADO.NET 实体数据模型”等新项目时,Visual Studio 会为您创建一个类型化数据上下文,这是 LINQPad 所期望的一个很好的例子。类型化数据上下文还可以公开方法(例如,映射存储过程或函数)——事实上,它可以公开任何对最终用户有意义的内容。

当您在具有连接的 LINQPad 中执行查询时,LINQPad 将与连接关联的类型化数据上下文子类化,以便查询可以访问其所有字段/属性。这就是为什么 Customers.Dump() 是一个有效的查询 - 我们可以直接访问 Customers 而不必先实例化类型化的数据上下文。

LINQPad 驱动程序可以以两种方式之一工作。它既可以像 Visual Studio 一样自动动态构建类型化数据上下文(动态 数据上下文驱动程序),也可以从用户提供的现有程序集中提取类型化数据上下文( em>static 数据上下文驱动程序)。在 LINQPad 中添加连接时,您会注意到驱动程序列在两个列表框中(自动构建数据上下文 = 动态驱动程序,以及使用来自您自己的程序集的类型化数据上下文 = 静态驱动程序)。

每当执行查询时,类型化数据上下文就会被实例化。因为它的属性通常返回延迟计算的 IEnumerables/IQueryables,所以考虑“填充”它没有帮助。然而,它需要知道如何访问底层数据源,这是由 passing arguments into the constructor 完成的。 .

LINQPad 通常在查询运行之间保持查询的应用程序域处于事件状态,如果您正在为对象数据库编写驱动程序,这可能对缓存和优化很有用。除此之外,对象数据库不应该有任何特殊的考虑。

关于c# - 使用 C# 为 linqpad 创建 DynamicDataContextDriver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13952170/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com