使用 Database First 方法选择性禁用延迟加载

2024-01-07

我对禁用整个上下文的延迟加载不感兴趣。我只想选择性地禁用一些关键导航属性的延迟加载。

随着代码优先方法,我了解如何有选择地禁用延迟加载:

public virtual Person Requestor { get; set; } //lazy loading enabled
...
public Person Requestor { get; set; } //lazy loading disabled

然而随着数据库优先方法,这是从模板生成的代码,因此此修改将在下次重新生成时丢失。

有没有办法修改模型或模板生成器以选择性禁用延迟加载?


我不知道有什么办法。但是,如果您要使用实体代码生成器,您可以构建一个警告系统,以便在重新生成代码时您立即收到通知(取决于您的构建策略)。

所以我要做的是对于选定的实体,假设该实体是Request有问题的财产是Requestor然后编写一个测试来断言该属性不是虚拟的

            [TestMethod()]
            public void RequestPropertyRequestor_MustNotBeVirtual() {

                PropertyInfo[] properties = typeof(Request).GetProperties()
                    .Where(p => p.GetGetMethod().IsVirtual).ToArray();
               Assert.AreEqual(0, properties.Count(p => p.Name == "Requestor"), "Model Code Regenerated - change the Request Entity");
            }

不确定反射代码的准确性,但你明白我的意思。这样,当重新生成实体并且您修改了代码时,测试就会失败。预警系统

OR

您可以关闭代码生成并使用 POCO。

建议更改

如果您不想关闭代码生成,则可以修改 T4 模板。只是

  • 将“代码生成策略”设置为None在 EDMX 设计器的属性中,这样就不会发生默认生成。这导致没有派生DbContext或实体类
  • 在 EDMX 设计器中,右键单击绘图表面并选择“添加代码生成项”。那里应该列出了生成器,如果不是通过 NuGet 安装的话。选择 EF5 DbContext 之一。
  • 找到用于实体生成和修改的T4模板。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Database First 方法选择性禁用延迟加载 的相关文章

  • 未定义条件编译符号

    我无法让 Visual Studio 按照我的预期运行 我创建了 2 个配置文件 一个定义了符号 FOO 另一个定义了符号 BAR 我有这个代码 static class MyClass if FOO public static strin
  • 删除自动导入的自定义项目模板

    我删除了放置在导出模板文件夹中的导出 zip 文件 当然它仍然显示在 Visual Studio 的 添加新项目 对话框中 我预料到了这一点 但我很难找到模板文件的其他存储位置 如何删除自定义模板 Edit 我搜索了以下文件夹 以及许多其他
  • 如何扩展我的发布配置文件以部署到多个位置?

    以下是为我的开发环境生成的发布配置文件
  • 无法让 Visual Studio 诊断工具工作

    我在启动 Visual Studio 2015 含更新 3 中的诊断工具时遇到一些问题 我在调试模式下构建并启动一个项目 诊断工具窗口会弹出并显示文本 启动诊断工具 大约十分钟后 该文本消失 但 诊断工具 窗口仍然存在 上面没有任何内容 诊
  • CSS 区域在 Visual Studio 2012 中不起作用

    我的 css 文件中有以下内容 但 css 区域不起作用 没有可供单击的折叠或展开图标 但 C 区域可以正常工作 只是 css 区域不能 region shared styles blah background color red foo
  • 如果我以后要应用ado实体框架,推荐的数据访问层设计模式是什么?

    我正在创建一个网站并使用 Linq to SQl 作为数据访问层 并且我愿意使该网站可以在 linq to sql 和 ado 实体框架上工作 而无需更改其他层中的许多内容 业务逻辑层或 UI层 实现这一目标的推荐模式是什么 你能简单解释一
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • 为什么文件更新时“如果较新则复制”不复制文件?

    我在 Visual Studio Express 中有一个解决方案 如下所示 The LogicSchemaC 中的类 将在运行时解析指定的 XML 文件 以下是在main的方法Program cs LogicSchema ls new L
  • 在 Xamarin 中获取 OutOfMemoryException

    java lang OutOfMemoryError 考虑增加 JavaMaximumHeapSize Java 执行时内存不足 java exe 我的 Visualstudio Xamarin 项目出现内存不足异常 请帮助我如何解决此问题
  • 由于继承抽象类而禁用设计器?

    我有一个项目的解决方案 那个项目中有 40 或 50 种形式 我制作了 4 个基本形式 所有其他形式都可以继承 所有 4 个基本表单都继承 System Windows Forms Form 几乎 90 的形式继承了前 2 个基本形式之一
  • 自定义Visual Studio的项目上下文菜单

    我正在使用带有一些加载项和扩展的 Visual Studio 2010 现在的问题是 解决方案资源管理器中项目项的上下文菜单变得如此之大 以至于我总是必须向下滚动才能找到我最常使用的 属性 和 在 Windows 资源管理器中打开 这变得非
  • EF6 Code First 支持表值函数吗?

    是否可以在 EF6 Code First 中调用 TVF 我首先使用 EF6 数据库启动了一个新项目 EF 能够将 TVF 导入到模型中并调用它就好了 但是 对于我一直在处理的没有 RI 的大型只读数据库 更新模型变得非常耗时并且存在问题
  • Automapper实体框架外键为空

    我正在尝试使用实体框架更新数据库 我使用自动映射器将实体映射到视图模型 并以相同的方式将其映射回来 HttpPost ValidateAntiForgeryToken public ActionResult Edit FromJson My
  • 使用 Visual Studio 2013 构建 Qt 5.2.1 的静态版本

    几天来我一直在尝试使用 Visual Studio 2013 构建 Qt 的静态版本 我就是不明白我做错了什么 System Windows 7 64 位 Visual Studio 2013 仍安装 Visual Studio 2012
  • Linq to Entities 中的动态 where 子句 (OR)

    在文中here https stackoverflow com questions 9122220 dynamic where clause in linq to entities我学习了如何使用 Linq 的延迟执行来构建动态查询 但查询
  • MVC5 实体框架的问题

    我在我的 Web 应用程序中使用 Visual Studio 2013 中的 ASP NET MVC5 Entity Framework 6 我正在尝试我的模型工作 但由于某种原因而出现错误 我已经尝试过 Fluent API 和它自己的模
  • 根据所选单选按钮启用文本框

    我有一个单选按钮列表 其中列出了不同的业务类别 最后一个选项是Other类别 当用户选择Other类别 我希望能够启用一个文本框 用户可以输入更多信息来解释Other选择 目前 我正在尝试 If rblCategory SelectedIn
  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • 如何在 EF Core 2.1 中定义外键关系

    我的 DAL 使用 EF Core 2 1 这就是我的模型的样子 一名用户只能拥有一种角色 Role entity kind of master public class Role public int RoleId get set pub
  • 选择里面的 Include in EF Core

    我有一个如下所示的实体 为简洁起见 部分删除 它包括许多其他属性 public class Tender Key DatabaseGenerated DatabaseGeneratedOption Identity public int I

随机推荐

  • Node.js 中确定一个路径是否是另一个路径的子目录

    我正在研究一个MQTT 处理程序 https github com jsdario replyer我想为每个有事件侦听器的父目录发出一个事件 例如 如果有以下可用的 MQTT 路径 其中有下标 这些路径有事件监听器 test replyer
  • 与大括号初始化末尾的额外“,”有任何关联吗?

    除了明显的名称之外 以下两个声明之间是否有区别 int main char str1 17 H e l l o char str2 17 H e l l o 第二个中多余的 是怎么回事 这有什么意义吗 两者似乎都编译得很好 在这种情况下 它
  • 我可以在 Django 中使用数据库视图作为模型吗?

    我想使用在数据库中创建的视图作为 django view 的源 不使用自定义sql 这可能吗 13 02 09 更新 就像许多答案所建议的那样 您可以在数据库中创建自己的视图 然后通过在 models py 中定义它来在 API 中使用它
  • 单字节异或密码 (python)

    这是我目前正在学习的现代密码学课程 挑战是 cryptopals 挑战 3 单字节 XOR 密码 我正在尝试使用 python 3 来帮助完成此任务 我知道我应该对字符串进行异或并转换为英语 十六进制字符串为 1b37373331363f7
  • ImageMagick - 与其他照片管理应用程序一样自动调整图像的颜色?

    一些照片管理应用程序 例如 flickr 网站上的 Picnic gnome 桌面上的 F Spot 可以选择 自动更正 自动修复 图像 这似乎可以调整图像中的颜色以使其看起来更美观好一些 例如 这是之前的 and after 无论如何 是
  • 联合中的字符串、段错误

    这基本上是一个标记联合 include
  • 我需要在 vba 中解释 activecell.offset

    我在理解一些 VBA 代码时遇到一些困难 我没有问题 activecell offset 1 1 select 但是 我有问题 activecell offset 1 1 range A1 select AND ActiveCell Off
  • TranslateAccelerator 和禁用的菜单项

    在我的应用程序中 我根据上下文启用 禁用菜单项 如果文本区域具有焦点 我会禁用与导航键冲突的加速器 例如 Ctrl 左 右 根据微软的文档 http msdn microsoft com en us library windows desk
  • 锚标记转到网页的错误部分

    这是问题所在的实际视频记录 我不想以任何方式做广告 https www youtube com watch v 7b38cQ0VGWI https www youtube com watch v 7b38cQ0VGWI 所以我创建一个网站只
  • 如何提高C++中merkle根计算的速度?

    我正在尝试尽可能优化默克尔根计算 到目前为止 我用 Python 实现了它 结果是这个问题 https stackoverflow com questions 67355203 how to improve the speed of mer
  • 如何防止按钮提交表单

    在下一页中 使用 Firefox 删除按钮会提交表单 但添加按钮不会提交表单 我该如何预防remove提交表单的按钮 function addItem var v form hidden last attr name var n input
  • 托管WPF插件跨进程问题

    我使用类似的方法http www codeproject com Articles 516431 Baktun Shell Hosting WPF Child Windows in Another http www codeproject
  • 检测到 HTML 文本框的拖放?

    我的网页上有一个正常的搜索框 它充满了文字 Search this website 当您单击框中输入搜索查询时 此文本将被删除 onfocus if this value Search this website this value 但是
  • 如何在Mac终端中使用SoX从文本文件中修剪特定时间的音频文件?

    我有一个文本文件 如下所示文本文件 https i stack imgur com iDm8k png 我想使用 sox 根据文本文件中的时间修剪音频文件 这样我就可以有从 0 0 到 6 16 6 16 到 13 44 13 44 到 1
  • 使用 selenium Java 或 cypress 中的 e2e 进行 Angular/SPA 应用程序的代码覆盖率

    我们想要测量 Angular 8 应用程序代码覆盖率 我们有一个用 selenium java 编写的 e2e 测试用例 它加载部署在浏览器中另一台机器上的 Angular 应用程序 并运行一些 e2e 测试用例集 问题是我如何测量 Ang
  • 字节序理论和概念

    这不是任何编程语言特有的问题 假设您在大端机器上编写了一些文件 并且您知道这一点 如果两个单字节值被连续写入 你怎么知道 Big endian 颠倒了 16 32 和 64 位值的顺序 那么您如何知道需要将其作为单个字节读取呢 例如 您写入
  • pygame中显示网格时角色移动缓慢

    我正在 pygame 中制作贪吃蛇游戏 我注意到了一件奇怪的事情 每当我显示网格时 我的角色都会缓慢运行 这是我的程序的主要功能 我刚刚开始学习pygame def main global SCREEN CLOCK pygame init
  • React 同一组件的多个实例获得相同的状态

    我有一个 React 组件 我正在创建它的 2 个副本 然而 当其中 1 个状态更新时 第 2 个状态也会更新 我不确定是什么原因造成的 这是我的代码 这是我使用两个组件的地方 this state selectedTab 0
  • 替换所有高于阈值的 RGB 值

    我有一个充满 RGB 值的 numpy 3d 数组 例如 形状 高度 宽度 3 matrix np array 0 0 5 0 6 0 9 1 2 0 如果任何值高于阈值 我必须替换 RGB 值 例如阈值 0 8 替换 2 2 2 然后 m
  • 使用 Database First 方法选择性禁用延迟加载

    我对禁用整个上下文的延迟加载不感兴趣 我只想选择性地禁用一些关键导航属性的延迟加载 随着代码优先方法 我了解如何有选择地禁用延迟加载 public virtual Person Requestor get set lazy loading