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为我生成它,我需要访问它.
在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)
使用 Linqpad 时,您实际上是在ObjectContext 中。只需输入:
this.
Run Code Online (Sandbox Code Playgroud)
您可以在访问属性您ObejctContext。
(另外:确保您使用“C# 语句”)
没有DeferredLoadingEnabled属性 in Entity Framework- 它是 的一部分Linq to SQL,而不是Linq to entities(EF)。
实体框架默认延迟加载。链接表将在访问时加载,或者当您自己显式加载它们时,或者当您使用第一个资源直接加载它们时(急切加载)。