为什么 EF 返回代理类而不是实际实体?

2024-01-03

当我想要实际的实体类时,我在实体框架返回代理时遇到问题。我第一次运行代码时,一切都运行正常(没有代理),但之后的每次迭代,我的一个 DbSet 总是返回代理而不是实际类型。

我在每次迭代后都会处理上下文,所以我不明白为什么第一次它有效,而之后每次都无效。

我的代码在这一行失败。我的所有 POCO 都设置了 Table 属性,但因为它返回代理类,所以没有表属性。

TableAttribute attrib = (TableAttribute)attributes.Single();

在销毁对象后,DbContext 中是否存在一些幕后静态魔法?

我使用以下命令将对象移动到内存中

MajorClasses = ctx.MajorClasses.ToArray();

我也尝试过

MajorClasses = ctx.MajorClasses.AsNoTracking().ToArray();

在我的 OnModelCreating 中我有以下设置

base.Configuration.ProxyCreationEnabled = false;
            base.Configuration.LazyLoadingEnabled = false;

您可以设置ObjectContext.ContextOptions.ProxyCreationEnabled为假。这将阻止您使用 EF 的一些奇特功能,例如延迟加载和更改跟踪。

就您的应用程序而言,它应该能够像对待它们所代表的类型一样对待代理。您有什么具体问题吗?

Edit

我们有一些代码需要 POCO 类型而不是代理类型,我们执行以下操作来检测当前类型是否是代理。

if (entityType.BaseType != null && entityType.Namespace == "System.Data.Entity.DynamicProxies")
{
    entityType = entityType.BaseType;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 EF 返回代理类而不是实际实体? 的相关文章

随机推荐

  • 如何获得CRC64分布式计算(利用其线性特性)?

    我需要对存储在分布式文件系统上的相当大的文件进行哈希处理 我能够以比整个文件更好的性能处理文件的某些部分 因此我希望能够计算各部分的哈希值 然后对其求和 我在想CRC64作为哈希算法 但我不知道如何使用其理论上的 线性函数 属性 以便我可以
  • Windows 10 (UWP) 编码 UI

    Visual Studio 2015 中没有适用于 UWP 的编码 UI 项目 而且我在任何地方都找不到任何说明有计划提供支持的文档 有谁知道是否有计划支持它或有一些替代的 UI 测试框架与 Windows Universal 一起使用 我
  • IIS 无法为用户访问 Excel 文件,但对我来说没问题。为什么?

    我有一个程序在 Windows Server 2008 R2 的 IIS 中作为服务运行 该程序在 Excel 中创建报告没有问题 当它尝试访问刚刚创建的 Excel 时 就会出现问题 这会在这行代码处向用户提供 80070005 错误 E
  • React with TypeScript - 如何导入方法

    在 React with TypeScript 中 我收集您使用以下命令导入import as React from react 如果我想使用useState and Fragment例如 我知道我可以使用React useState an
  • 如何在不使用reverse=True参数的情况下对字符串列表进行逆序排序?

    我想以相反的顺序对字符串列表进行排序 例如 my list aaa bbb ccc 预期结果 ccc bbb aaa 我不想使用sorted my list reverse True 因为在更复杂的情况下 当按两个值进行过滤时 它不起作用
  • iOS Swift - 如何使用核心数据存储数组?

    我是 iOS 开发新手 想知道应该指定哪种数据类型来存储多个字符串 数组 该应用程序与食物有关 我需要将多种成分存储为一个属性 我正在考虑将成分作为实体 但我只是想让初学者变得容易 我读过有关可转换类型的内容 但人们似乎不建议使用它来存储数
  • 如何在React中更改MUI Datepicker输入框的高度

  • 测试 ClickOnce 应用程序

    您将使用什么方法在多个用户中测试 ClickOnce 应用程序的新版本 与当前版本并排 是否有任何最佳实践 特别是当应用程序依赖于不同服务器来实现 SQL Web 服务等的实时 测试版本时 我们使用内部 DNS 来设置http applic
  • 学习 Haskell 是为了学习 Scala

    我读过一些问题 例如 Scala vs Haskell 讨论两种语言的优点或学习哪种语言 但我已经知道我想学习 Scala 我在大学时是一名Java程序员 现在主要使用PHP 我想学习 Scala 因为它看起来像是个人项目中 Java 的改
  • 抑制 VSCode 中的 ESLint 警告

    我正在使用 ESLint扩大 https marketplace visualstudio com items itemName dbaeumer vscode eslint在 VSCode 中格式化并检查我的 JavaScript 代码
  • 将我的应用程序添加到 tvOS 应用程序设置屏幕

    How do you add app settings to tvOS like you do in iOS I assume that just like iOS the screen below you can add the sett
  • 当滚动离开视图 android 时,项目动画在 recyclerview 中停止

    我有一个 Recyclerview 我正在为单个列表项内的视图设置动画 但是当我滚动 recyclerview 时 动画停止 这是因为 recyclerview 会从其视图中删除项目 因此当我们向后滚动时 它会将其取回 但现在我希望该动画继
  • 垂直对齐字体很棒的图标与
  • 内的文本
  • 我有一个使用很棒的字体的列表 因此它的类是fa ul ul class fa ul li class dept i class fa li fa fa stop i span Management span li li class dept
  • 在Linux中,为什么所有进程都有一个全局的/dev/stdin文件?

    不同进程的标准输入不应该是唯一的吗 如果是这样 标准输入文件的路径不应该是这样的 dev pid stdin而不是全局的 dev stdin 有人对此有想法吗 dev stdin是独一无二的 因为 它是一个符号链接 proc self fd
  • MFMessageComposeViewController 不工作

    我有一种简单的方法 可以获取一个参数 然后发送一条消息 它不起作用 Code void sendSMS NSString text MFMessageComposeViewController viewController MFMessag
  • 用于 Web 应用程序的 GetEntryAssembly

    Assembly GetEntryAssembly 不适用于网络应用程序 但是 我真的需要这样的东西 我使用一些在 Web 和非 Web 应用程序中使用的深度嵌套代码 我当前的解决方案是浏览 StackTrace 以查找第一个调用的程序集
  • 在 SQLite 数据库中存储 XML/HTML 文件 - 可能吗?

    是否可以直接将 XML HTML 文件存储在 SQLite 数据库中 我正在用 python 编写一个程序 该程序应该解析 XML HTML 文件并将值存储在数据库中 然而 XML HTML 文件中的字段可能会有所不同 我认为将整个 XML
  • 如何在 SmartOS 上使用 HotSpot DTrace 探针?

    在 Mac OS X 上 我可以通过运行以下命令找到运行 Java 程序的 HotSpot 探针 cody mello ashur 1 sudo dtrace ln hotspot Password Invalid connection c
  • 使用数组查询sqlite数据库android

    我如何使用字符串数组来查询 sqlite 数据库 我不断收到异常 SQliteException 绑定或列索引超出范围 String names new String values size values is an Arraylist S
  • 为什么 EF 返回代理类而不是实际实体?

    当我想要实际的实体类时 我在实体框架返回代理时遇到问题 我第一次运行代码时 一切都运行正常 没有代理 但之后的每次迭代 我的一个 DbSet 总是返回代理而不是实际类型 我在每次迭代后都会处理上下文 所以我不明白为什么第一次它有效 而之后每