如何在实体框架 OnModelCreating 中运行查询

2024-02-24

关于如何运行查询的任何想法OnModelCreating?

我正在尝试运行查询,然后基于该查询忽略实体中的列。

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
     var d = this.Database.SqlQuery<int?>(@"select 1 from sys.columns where Name = N'columnname' and Object_ID = Object_ID(N'tablename')").SingleOrDefault();

     if(d == null)
     {
         depEntity.Ignore(d => d.colmnname);
     }
}

我收到以下错误:

创建模型时无法使用上下文。如果在 OnModelCreating 方法内部使用上下文或者多个线程同时访问同一个上下文实例,则可能会引发此异常。请注意,不保证 DbContext 和相关类的实例成员是线程安全的。 (有关详细信息,请参阅内部异常。)

System.InvalidOperationException:创建模型时无法使用上下文。如果在 OnModelCreating 方法内部使用上下文或者多个线程同时访问同一个上下文实例,则可能会引发此异常。请注意,不保证 DbContext 和相关类的实例成员是线程安全的。


我认为对于这两种情况你应该有两个上下文类。并且您的查询应该在内部调用Factory选择应返回实例的类:

public class CommonContext : DbContext
{
    //common stuff...
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        //common stuff...
    }
}

public class IgnoreContext : CommonContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<DepEntity>().Ignore(d => d.colmnname);
    }
}

public ContextFactory()
{
    public CommonContext CreateContext()
    {
         var ctx = new CommonContext();
         var d = ctx.Database.SqlQuery<int?>(@"select 1 from sys.columns where Name = N'columnname' and Object_ID = Object_ID(N'tablename')").SingleOrDefault();
         if(d != null)
             return ctx;             
         return new IgnoreContext();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在实体框架 OnModelCreating 中运行查询 的相关文章

  • 实体框架 4 DB 优先依赖注入?

    我更喜欢创建自己的数据库 设置索引 唯一约束等 使用 edmx 实体框架设计器 从数据库生成域模型是轻而易举的事 现在我有兴趣使用依赖注入来设置一些存储库 我查看了 StackOverflow 上的一些文章和帖子 似乎重点关注代码优先方法
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 实体框架、LinqToSQL 和 sql 注入

    完全使用 Linq To SQL 或实体框架的项目是否有可能遭受 SQL 注入 我认为这可能不是因为 ORM 生成的 SQL 应该是免 SQL 注入的 但我不确定 当您按预期使用这些框架时 即直接使用实体 表 那么就不会 所有字符串比较 即
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • .edmx 文件的用途是什么?

    edmx 文件的用途是什么 阅读 CSDL SSDL 和 MSL 规范 在我看来 edmx 文件仅在设计时使用 我们打算将它与其他 edmx 一起分发吗 看来我们需要分发 ssdl 和 或 csdl 文件 EDMX 是 Visual Stu
  • 乐观并发:IsConcurrencyToken 和 RowVersion

    我正在创建将在我的应用程序中使用的默认并发策略 我决定采取乐观的策略 我的所有实体都映射为Table per Type TPT 使用继承 我很快了解到 在实体框架上使用带有继承的 RowVersion 类型的列时存在问题 Product I
  • 静态构造函数中的 Database.SetInitializer() ?

    许多人可能知道为什么我们需要使用下面所示的代码 但是 我想将此逻辑分成几层 并且不想在 Web 层中引用实体框架 DLL 因此我最终将此代码放入我的静态构造函数中DbContext class 这是一个坏主意吗 这样做会对应用程序的性能造成
  • 我可以将 UseCSharpNullComparisonBehavior 用于单个查询吗?

    我有一个查询 该查询曾经是存储过程 现已转换为 EF 查询 现在已经超时了 使用 SQL Profiler 我可以看到生成的 SQL 的唯一区别是 EF 转变的新行为entity Property value into entity Pro
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma
  • 有没有办法将所有内容都包含在 dbcontext 中?

    当查询一个DbContext急切加载时 需要Include Navigation 为了填充导航属性 然而 在某些情况下 我想简单地Include all实体的导航属性 有没有办法做到这一点 或者有办法做到这一点 我假设你可以反思 但我宁愿避
  • EF 5.0 中的链接 OR 条件

    我将以此为序言 我正在积极寻找这个问题的解决方案 但我想 如果堆栈上有人已经解决了这个问题 我可能会缩短一些研究和开发时间 我在网上没有找到任何东西 所以这里是 我们正在构建的应用程序框架中有一个案例 我们需要能够接受一组谓词 List
  • 在 MVC3 Razor 视图中引用 EntityFramework 4.1 命名空间

    我试图在我的 MVC3 项目中的共享视图内引用 System Data Entity Validation EF 4 1 版本 命名空间 我已经能够使用以下方式引用其他外部库 using Example Namespace 然而 当涉及到作
  • 大表的最佳主键格式

    我正在开发一个 ASP NET 应用程序 它有一些可能很大的数据表 我想知道定义主键的最佳方法是什么 我知道以前已经有人问过这个问题 但由于这是针对特定情况的 所以我认为这个问题是有效的 我在 SQL Server 2008 数据库上使用实
  • 在一个数据库请求中连接 IQueryable 集合

    我使用实体框架 我需要连接两个集合 例如 IQueryable
  • 默认情况下 dbo 架构中的 EF 6 Code First __MigrationHistory

    我是代码优先实体框架的新手 第一次运行我的应用程序后登录数据库时 当我看到 MigrationHistory 表时 我有点困惑 我现在了解对此表的需求 但不喜欢它位于用户表内的标准 dbo 模式中 我认为它很唐突且有风险 我的第一个想法是将
  • EF Core - 可能会导致循环或多个级联路径

    我已经设置了一个我认为非常简单的数据库 但是我收到以下错误 在表 User 上引入 FOREIGN KEY 约束 FK User Suburb SuburbId 可能会导致循环或多个级联路径 指定 ON DELETE NO ACTION 或
  • 如何创建实体集或模型而不在数据库中创建相应的表 - 实体框架

    我的 sqlserver 数据库中有一个存储过程 它返回多个结果集 我正在使用 msdn 中的以下链接从实体框架中的 SP 读取多个结果集 https msdn microsoft com en us library jj691402 v
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • 实体框架中的分页

    在实体框架中 使用 LINQ to Entities 数据库分页通常按以下方式完成 int totalRecords EntityContext Context UserSet Count var list EntityContext Co
  • 如何计算关联实体而不在实体框架中获取它们

    我想知道这个问题已经有一段时间了 所以我认为值得使用我的第一篇 Stack Overflow 帖子来询问它 想象一下我正在与关联的消息列表进行讨论 DiscussionCategory discussionCategory reposito

随机推荐

  • 在 Visual Studio Express 2010 中无法选择 Main Method 作为启动对象?

    我在我的一个课程中编写了一个 Main 方法 我的启动对象说Not set 单击它时 下拉菜单中不会显示任何其他内容 为什么我不能选择 main 方法作为我的启动对象 我只想通过按 ctrl F7 来运行我的主方法 但这样做时什么也没有发生
  • IIS、Asp.NET 管道和并发性

    我想知道 Web 应用程序中的并发实际上是如何工作的 我读过几篇文章 据我了解 HttpApplication 的多个实例将同时工作 现在 我创建了一个简单的 Web 应用程序来测试并发性 并将以下内容放入 global asax prot
  • 汇编器:为什么存在BCD?

    我知道如果您不了解二进制 BCD 是更直观的数据类型 但我不知道为什么要使用这种编码 它好像没有多大意义 因为它浪费 以 4 位表示 当表示大于 9 时 另外我认为 x86 只支持直接添加和替换 您可以通过 FPU 转换它们 这有可能来自旧
  • 尝试使用 object_getIvar 检索值时 EXC_BAD_ACCESS

    我正在尝试学习如何利用 Objective C 运行时函数 我有一本字典 其中包含几个name value pairs E g recipe description Delicious and healthy recipe id 70423
  • 下降顺序和级联

    我想使用 CASCADE 在一个语句中删除表中使用的序列和表本身 但我收到通知 并且表没有被删除 例如 CREATE SEQUENCE seq1 CREATE TABLE t1 f1 INT NOT NULL DEFAULT nextval
  • C中设定间隔生成随机数

    我确实了解Python 并且在设定的时间间隔内创建随机数非常简单 但在C 中似乎有点复杂 这是我通过查看有关堆栈溢出的其他问题得到的结果 int diceroll 1 diceroll 1 rand 3 1 printf d n dicer
  • Emacs 23 和 iPython

    有人在 emacs 23 上使用 iPython 吗 emacs wiki 上的文档有点混乱 我有兴趣听取任何使用 emacs 进行 Python 开发的人的意见 你使用下载的 python mode 和 ipython el 吗 你有什么
  • XmlpullparserException:需要一个带引号的字符串(java.io.Inputstreamreader 中的位置:DOCDECL @1:62)

    Code SoapObject request new SoapObject NAMESPACE SOAP METHOD GETDATATBL request addProperty TName ttnm request addProper
  • jgit 如何获取两个日期之间发生的所有提交

    或者只是两个日期之间发生的所有提交 在 SVN 中 你可以做类似的事情svn diff r date date 去做吧 你可以举这个例子JGit测试类RevWalkFilterTest java https github com eclip
  • 从方法外部取消 GetAsync 请求

    我有大量的异步请求 在某些时候 当应用程序停用 暂停 时 我需要取消所有请求 我正在寻找一种解决方案来取消异步方法之外的请求 有人能指出我正确的方向吗 这是代码块 异步方法 public async void GetDetailsAsync
  • 更改数组中的索引顺序

    现在已经被困在这个问题上有一段时间了 所以任何帮助将不胜感激 我有一个包含元素列表的数组 左 目标是使用左数组中的值对另一个数组 右 键进行排序 左边的数组 Array 0 gt ID 1 gt FirstName 2 gt LastNam
  • 如何在Google Drive Filestream中创建node.js项目

    我正在尝试在 Google Drive Stream windows10 上创建一个 vue 项目 但我不能 cd G MyDrive webdata sample app vue init simulatedgreg electron v
  • @AppStorage可以在SwiftUI中的Environment中使用吗?

    AppStorage可以在SwiftUI的Environment中使用吗 如果可以 你会怎么做 我知道您可以使用 Bindings 将 AppStorage 的值从一个视图发送到另一个视图 我想知道是否可以将其放入环境中 我没有关于何时适用
  • 所有 iOS 屏幕尺寸的启动屏幕图像尺寸

    我正在尝试为我的 iOS 应用程序创建午餐屏幕图像 但我不确定它的尺寸合适 根据苹果网站 iPhone 6 的纵向尺寸应为 750 x 1334 2x 但我的问题是 如何创建适合所有屏幕尺寸 例如 iPhone 5 5s 6 6 plus
  • 多行在 TextInputLayout 中不起作用

    无论我做什么 我都无法成功EditText内部多行TextInputLayout 必须添加InputLayout用于字符计数器 因此 当我输入某些内容时 它会水平移动 而不是在一段时间后进入新行 正如你所知道的 在正常情况下EditText
  • 保护 WCF RESTful 服务——除非经过身份验证,否则无法调用它

    我将使用 webHttp 或 basicHTTP 绑定编写一个 RESTful WCF 服务 没什么花哨的 但是 我想保护它 以便除非有人登录 通过我的 ASP Net MVC 网站进行身份验证 否则他们无法使用该服务 我肯定找错了地方 因
  • 文件的 CRC 检查

    我正在使用一个小型 FAT16 文件系统 并且想要为存储配置信息的单个 XML 文件生成 CRC 值 如果数据发生更改或损坏 我希望能够检查 CRC 以确定文件仍处于原始状态 问题是 如何将CRC值放入文件中 而不改变文件本身的CRC值 我
  • Protractor - 当子元素也是页面其他位置的主元素时,如何在元素内查找元素

    div class base view app loaded div class ng scope div class ng scope div class feedback ball feedback ball show feedback
  • 如何处理 Axios 超时与挂起的 API 服务器?

    尝试获取时遇到问题timeoutaxios 工作方法 为了测试 我故意设置了一个错误的 API 端点 它接受请求 抛出错误 例如 throw new Error testing for timeout 并且故意不做任何其他事情 一旦我调用测
  • 如何在实体框架 OnModelCreating 中运行查询

    关于如何运行查询的任何想法OnModelCreating 我正在尝试运行查询 然后基于该查询忽略实体中的列 protected override void OnModelCreating DbModelBuilder modelBuilde