在Linqpad中获取实体框架上下文?

Roy*_*mir 8 c# entity-framework linqpad

我创建了一个DLL包含edmxfor northwind数据库的程序集.

我通过linqpad创建了对该DLL的引用,我确实看到了db并且能够运行查询.

但是 - 我想测试DeferredLoadingEnabled属性的行为,我需要通过上下文变量来设置它.

例如

ctx.DeferredLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)

但我怎么才能访问ctx

linqpad为我生成它,我需要访问它.

Str*_*ior 9

在Entity Framework 5中,等效属性是:

ctx.Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)

如果你在LINQPad中,那么你已经在上下文中,所以你可以说:

Configuration.LazyLoadingEnabled = false;
Run Code Online (Sandbox Code Playgroud)

但是当我将代码从Visual Studio复制到LINQPad时,我通常只是在顶部添加一行,所以所有代码都是一样的:

var ctx = this;
Run Code Online (Sandbox Code Playgroud)


Jen*_*ter 5

使用 Linqpad 时,您实际上是ObjectContext 中。只需输入:

this.
Run Code Online (Sandbox Code Playgroud)

您可以在访问属性ObejctContext。

(另外:确保您使用“C# 语句”)


use*_*389 5

没有DeferredLoadingEnabled属性 in Entity Framework- 它是 的一部分Linq to SQL,而不是Linq to entities(EF)。

实体框架默认延迟加载。链接表将在访问时加载,或者当您自己显式加载它们时,或者当您使用第一个资源直接加载它们时(急切加载)。

  • @RoyiNamir EF 的行为类似于 L2S,当您在 L2S 中将此属性设置为 true 时。如果您不将其设置为 true,则 EF 的行为不会像它那样。但是书里的那句话真的写的很乱。 (2认同)