如何在实体框架 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 中运行查询 的相关文章

  • TransactionScope - 底层提供程序在 EnlistTransaction 上失败。 MSDTC 正在中止

    我们的团队遇到了一个问题 表现为 底层提供者在 EnlistTransaction 上失败 无法访问 已处置对象 对象名称 事务 这似乎是我们一开始使用就出现的交易范围 http msdn microsoft com en us libra
  • 在 MVC 3 中,我无法让 @Html.DisplayFor 呈现格式化字符串

    我希望这是一个非常简单的问题 尽管经过大量谷歌搜索后 我还没有能够解决这个问题 我正在使用 MVC 3 开发一个购物车网站 并使用代码优先的实体框架 我发送的模型是 Product 对象的列表 每个对象都包含此属性 Required Err
  • 首先EntityFramework数据库 - 类型映射 - 将binary(8)从SQL映射到C#中的int

    在 SQL 内部 我有一个主键为二进制 8 的表 当我使用该表添加到我的模型中时Update Model from Database我可以看到该列有 type Binary 在 C 中 我将该列设为byte 我可以将该列映射到 int 吗
  • 自数据库创建以来,支持“ApplicationDbContext”上下文的模型已发生更改

    首先 我在其他地方没有看到这个错误 我想这不是重复的 所以请先阅读整个情况 一切都工作得很好然后我尝试更新我的模型类之一 the 应用类现在更新已被评论 我将在下面列出 我遇到了这个丑陋的错误 自创建数据库以来 支持 Application
  • 如何检查 EntityTypeConfiguration 实例的成员配置?

    我正在使用 Entity Framework Code First 和继承自 EntityTypeConfiguration 的映射类 我这样做是为了封装我使用 Code First Fluent API 来配置实体的方法 我希望能够检查这
  • 使用实体框架存储库返回多个结果集

    我正在编写一个代码 其中我需要多个表作为存储过程的结果 我正在使用实体框架存储库模式 它返回并绑定一个 IEnumerable 对象 但我需要同时将它与多个 IEnumerable 绑定 有人可以帮忙吗 这是我正在使用的代码 db Data
  • 继承 IdentityUser 我在 UserManager 上收到错误

    我正在使用 NET Framework 4 5 1 和 Asp Net Identity 2 1 0 开发 Web Api 2 2 应用程序 我不确定我在做什么 但我想将我的数据库与 ASP NET Identity 数据库合并 我已经这样
  • 在使用实体框架的分层架构中,我应该从 BLL 返回 POCO 类吗? (需要架构指导)

    我可能读得太多了 并且遭受了一些信息超载的困扰 所以我希望得到一些明确的指导 根据我收集的信息 我可以使用 VS2010 的 T4 模板来生成不直接与 EF 绑定的 POCO 类 我会将这些放在他们自己的项目中 而我的 DAL 将有一个 O
  • 延迟加载实体框架 v.1 中昂贵的字段

    在网上搜寻并认为我能找到解决方案后 我似乎又碰上了另一堵砖墙 我的数据库中有一个表 照片 包含 PhotoID 标题 排序和四组二进制数据的列 原始 大 中和小 是的 它基于旧的 ASP NET 入门工具包 并进行了各种修复等 我正在从 L
  • 在多线程程序中使用 EF 有什么好的建议吗?

    您对于在多线程程序中使用 EF 有什么好的建议吗 我有两层 用于读 写数据库的 EF 层 一个多线程服务 它使用我的实体 读 写 并进行一些计算 我在框架中使用任务并行库 如何同步每个线程中的对象上下文 您知道让它发挥作用的好模式吗 好的建
  • EF 6:映射复杂类型集合?

    EF 6 代码优先 是否支持复杂类型集合 值对象集合 映射 我知道它支持复杂类型 但还没有找到我们拥有复杂类型集合的示例 例如 假设您有一个名为 Student 的实体 其中包含联系人集合 对于 NH 我可以简单地说 Student 有一个
  • 实体框架中 1:1 关系中关联的主体端意味着什么

    public class Foo public string FooId get set public Boo Boo get set public class Boo public string BooId get set public
  • 实体框架在不同的工作站上生成不同的查询

    我们在单个开发人员机器和一些客户端上遇到问题 单个 Linq 查询 生成两个不同的 SQL 查询 问题实际上是第二个查询有 firebird 不支持的 OUTER APPLY 语句 我们认为这不是代码问题 而是环境问题 但我会粘贴代码 li
  • 实体框架以错误的顺序插入子对象

    Question 为什么 EF 首先在它所依赖的对象 TimesheetActivity 之前插入具有依赖项的子对象 PersonnelWorkRecord 另外我有哪些纠正这个问题的选择 ERD 简化 This is predefined
  • 使用 DI 将参数传递给 DbContext

    我想向 DBContext 传递一个附加参数 如下所示 string myParam xx string con connenctionstring services AddDbContext
  • 同时使用实体框架与 SQL Server 和 SQLite 数据库

    我有一个用于测试目的的 C Net 4 0 控制台应用程序 使用 VS 2012 我的目标是能够创建一个可在 MS SQL Server 数据库和 SQLite 数据库上使用的单个实体框架 edmx 文件 基本上 我想使用相同的实体模型类和
  • 实体框架中空值的左连接

    我需要使用实体框架在 C 项目中执行 10 次左连接 我已经检查了至少 10 个不同的页面和 stackoverflow 帖子来了解如何执行此操作 他们都没有工作 我当前的加入如下所示 from tbl1 in context tblNam
  • .NET 实体框架核心

    我已经阅读了过去两年中发布的几乎所有有关 EF 的其他问题 我下载其他软件包没有任何问题 只是实体框架不会为我安装 我什至尝试安装最新版本的 Nuget 并在我的项目目录中使用它的工具来恢复包 之后 我将这一行添加到我的 csproj 中
  • 将大量实体插入 SQL Server 2012 [重复]

    这个问题在这里已经有答案了 我正在进行一个使用 Entity Framework 5 和 SQL Server 2012 的项目 我们需要一次插入大量行 100k 个实体的顺序 基本上 我们有一个物理程序 它输出大量二进制数据 然后我们需要
  • 不支持 EF6 上下文类型“System.Data.Entity.Core.Objects.ObjectContext”

    我有一个使用 Visual Studio 2013 和 ADO NET 实体数据模型 EF6 创建的新项目 现在我必须使用一些动态数据函数 例如访问 MetaTable 对象 所以我添加以下代码 MetaModel model new Me

随机推荐

  • 在 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