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

时间:2013-09-24 17:30:11

标签: c# entity-framework linqpad

我创建了一个DLL程序集,其中包含edmx northwind数据库。

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

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

例如

ctx.DeferredLoadingEnabled = false;

但我如何访问ctx

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

3 个答案:

答案 0 :(得分:9)

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

ctx.Configuration.LazyLoadingEnabled = false;

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

Configuration.LazyLoadingEnabled = false;

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

var ctx = this;

答案 1 :(得分:4)

DeferredLoadingEnabled中没有Entity Framework属性 - 它属于Linq to SQL,而非Linq to entities(EF)。

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

答案 2 :(得分:3)

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

this.

您可以访问 ObejctContext上的属性。

(另请:确保使用“C#Statement”)