- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个项目结构如下:.Persistence -> .Repo -> .Services -> .Controllers -> MVC3 App。
每一层都有一个带有接口(interface)的相应程序集,还有一些其他程序集,如 .Entities、.ViewModels 和通用代码程序集。
持久性 - 这包含 EF4 数据上下文(代码优先)和对 EF4.3 的引用。有一个用于创建名为 GetContext() 的上下文的工厂,该工厂实现了 IDisposable。这不是一个单例,因为我认为这就是温莎用 LifestyleSingleton() 为我做的事情。
Repo - 这包含实现存储库和规范模式 (http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/) 的存储库。
其他层是不言自明的...
问题:
1、为什么开启懒加载的时候还要开启代理创建?
2. 如果我想设置 lazyloading = false,我可以将 Service 层中的 IEnumerable 转换为 ObjectQuery 以便在那里使用 .Include() 吗?
最佳答案
Why does proxy creation have to be enabled when lazy loading is enabled?
因为 POCO 的延迟加载依赖于代理创建。没有代理,延迟加载是行不通的。因此组合ProxyCreationEnabled = false
和 LazyLoadingEnabled = true
没有意义。如果您想使用更改跟踪代理但不想使用延迟加载,则反向组合很有意义。
If I want to set lazyloading = false, can I cast my IEnumerable in Service layer to ObjectQuery in order to use .Include() there?
这取决于你的IEnumerable<T>
确实是。如果它是 ToList()
的结果那么没有(因为 List<T>
是 IEnumerable<T>
的实现,而不是 IQueryable<T>
的实现。)。如果你只是返回一个 IQueryable<T>
作为IEnumerable<T>
你可能可以转换为 IQueryable<T>
. (在 EF 4.3 中,您将使用 IQueryable<T>
或 DbQuery<T>
而不是 ObjectQuery<T>
。)
但是恕我直言,需要这样的转换表明您的架构中存在问题。使用 Include
是查询的修改。如果允许您的服务层修改查询,您的存储库应返回 IQueryable<T>
- 此类型用于构建和修改查询。
如果您的存储库不应该返回 IQueryable<T>
您必须将表达式或规范传递到用于添加 Include
的存储库方法中到您的查询 - 在存储库方法内部,而不是在服务层中。
关于c# - EF4 : Why does proxy creation have to be enabled when lazy loading is enabled?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9500642/
我使用的是基于 Eclipse 3.x 的 WID 6.1。 尝试右键单击文件夹时,新建-> 类,键入类的名称,然后单击完成,出现错误 "Creation of element failed. org
假设我想创建一个浏览器插件,每当某人单击我网页上的按钮时,该插件就会打开他们的软盘驱动器。 (你还记得那个老笑话吗?-别担心,我真的不想这么做。) 创建可在大多数浏览器和大多数操作系统上运行的浏览器插
我目前正在尝试在 Azure 容器实例上创建一个新容器,以在其上部署 .net core 应用程序镜像。 (我是这项技术的新手)。 我在 Azure 上创建了一个容器注册表,并在其上推送了一个镜像(.
我不确定我问的是否正确,但我知道你们都很聪明,能够弄清楚:)。我在压缩一些 python 类中的一些重复代码时遇到了麻烦。这是我的意思的一个例子...... class Parent: PAT
我想要扩展这些 C 预处理器行: #define _POUND_ #define _POUND_ _FALSE 0 _FALSE 展开,最后一行(即_FALSE)展开为0。我知道递归CPP不可能直接实
我需要创建 generic list可以充当List或 List因为我有以下情况。 if(e instanceof A) return A; else return B 但我想填充一个 List Re
我正在尝试构建一个共享对象,以便稍后在其他项目中使用共享对象中的函数 DoSomethingUseful()。它使用外部库以及我在多个项目中使用的一堆 header 。 使用 CMake,我创建了一个
void foo() { //some code MyClass m(); //some more code } C++ 标准是否确保 MyClass 类的构造函数将在 /
我正在尝试在 2D 游戏中创建斜坡。这个斜坡应该有一个 X 度。当现在一个球“滚过”这个斜坡时。这个坡度的效果应该改变,然后球的行为因此向后滚动,向前滚动或在其他地方初始化倾斜度。我认为我可以使用具有
我有一个开发分支,我想看看“分支创建”和现在的区别。实际上,我更感兴趣的是创建分支之后的提交,这更像是“创建分支”+1。 我知道我可以在 Git 命令中使用像 HEAD 和 HEAD~1 这样的简写。
在JavaScript: Understanding the Weird Parts讲师解释说,变量的内存是在所谓的创建阶段设置的(并且 undefined 已分配);然后执行阶段发生。但是,当我们不
我需要NodeJS代码来创建POST请求,以便从URL创建一个FB页面。必须代码有错误,我找不到它。错误消息为请求失败,状态代码为400。我没有包含accesToken字符串,但它存在于我的实际代码中
我开发了一个具有以下特点的 Fortran 代码: 全局变量 13 个带有多个子程序的模块 独立子程序 将英特尔 MKL 库用于 LAPACK 库(线性代数) 读写文本文件 代码变得相当大。即使在这个
我想创建一个数组 ArrayList .我尝试了以下方法: static ArrayList[] displayBlocks = new ArrayList[3]; 但是,我收到编译时错误: gene
云信息supports通过“堆栈创建选项”设置超时。但是这个部分在 serverless.yml 中?有什么解决方法吗? 最佳答案 查看actual code ,TimeoutInMinutes 参数
我们希望只有部分人能够在 Azure DevOps 云(?)存储库中创建“release/*”分支。 不幸的是,我在用户界面中找不到这个选项。我这里也找不到 https://learn.microso
我使用 Azure AD Graph API 差异查询来检测 Azure AD 中的更改。 对于 User 或 Group 类型的每个结果节点,如何区分该对象是新的还是仅更新的? 我使用ocp-aad
我正在发布简单的数据,例如 { "title" : "test Title" } 到(顺其自然)/posts uri,例如类似 RestAssured.baseURI = "http://localh
我正在尝试为撇号创建一个产品引擎。我在扩展“页面设置”表单时遇到问题,目前我想添加一个简单的文本区域来向页面添加概要 - 最终我想添加“产品”设置,但我需要先完成基础知识。 我创建了一个表单和一个设置
我使用 Azure AD Graph API 差异查询来检测 Azure AD 中的更改。 对于 User 或 Group 类型的每个结果节点,如何区分该对象是新的还是仅更新的? 我使用ocp-aad
我是一名优秀的程序员,十分优秀!