Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >如果忽略用于过程的dbset,则不能使用ignore来获取该过程

如果忽略用于过程的dbset,则不能使用ignore来获取该过程
EN

Stack Overflow用户
提问于 2019-08-15 16:21:52
回答 2查看 2.5K关注 0票数 5

我有一个EFCore2.2应用程序,运行良好。然后我介绍程序,并知道我可以这样做:

...In myContext

代码语言:javascript
代码运行次数:0
复制
public virtual DbSet<MyProcsDbSet> MyProcsDbSet{ get; set; }

获取数据的示例调用:

代码语言:javascript
代码运行次数:0
复制
using(var context = myContext())
{
   var data = context.MyProcsDbSet.ExecuteSQL("Myproc @p0", 1);
}

这应该注意-这很好。但是,当我创建一个新的迁移时,它会生成一个表。好吧,没什么大不了的,我只会在On模型创建中声明,而不是构建那个表。

代码语言:javascript
代码运行次数:0
复制
bldr.Ignore<MyProcsDbSet>();

不,现在当我打电话给我的程序时,我明白了:

无法为“MyProcsDbSet”创建MyProcsDbSet,因为该类型未包含在上下文的模型中。

是否有一种方法可以获得用于过程返回的dbset,而不必永远抑制ef核心的不足来创建表?,.NET core代码的能力首先似乎总是与自定义对象以及它们的创建和检索有关。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-16 02:23:08

Ignore (或[NotMapped]属性)绝对不是用来抑制表生成的。它基本上是告诉EF Core不要考虑类和它的属性作为模型的一部分,因此它不能用于LINQ实体查询和其他EF提供的服务。

在EFCore2.x中实现目标的唯一选择是将SP结果类映射为查询类型

除了实体类型之外,EF核心模型还可以包含查询类型,这些查询类型可用于对未映射到实体类型的数据执行数据库查询。

查询类型有一些限制,但在默认情况下没有映射到数据库对象,因此非常适合与FromSql一起使用。

您所需要的只是将定义从DbSet更改为DbQuery

代码语言:javascript
代码运行次数:0
复制
public virtual DbQuery<MyProcsDbSet> MyProcsDbSet{ get; set; } 

如果您有流畅的配置,请确保使用modelBuilder.Query<MyProcsDbSet>而不是modelBuilder.Entity<MyProcsDbSet>

在EFCore3.0中,上面的内容会改变,因为查询类型将与实体类型合并。。因此,基本上您必须使用DbSet (和modelBuilder.Entity)和HasNoKey fluent API相结合。现在说确切的行为还为时过早,但我认为默认情况下,无键实体类型(在3.0中称为它们)不会映射到表,或者会有一个特殊的fluent API来告诉实体没有关联的表。这在2.x中是有用的--正如我在一开始提到的,Ignore有着不同的含义,所以使用类似HasNoTable()[Table(null)].ToTable(null)之类的东西来显式地抑制表生成是很好的。

但是它就是这样的,所以要么使用查询类型,要么手动从生成的迁移中删除"table“和相关命令。

票数 7
EN

Stack Overflow用户

发布于 2020-05-14 08:10:37

在以前的版本中,有DbQuery,它被EF核心>= 3.0所反对

builder.Entity<MyProcsDbSet>.HasNoKey()不排除创建DbSet。

唯一的解决方案是修改生成的迁移。

或者在迁移生成后添加builder.Ignore<MyProcsDbSet>();并对其进行注释。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57517620

复制
相关文章
Git .ignore 文件规则不生效
其实这个问题很简单,主要是因为我们的项目不是在构建之前就加入了 ignore 规则,而是在某些文件已经纳入版本控制之后添加的规则,所以规则不生效
攻城狮杰森
2022/06/03
6390
Git .ignore 文件规则不生效
ABB OCAHG 用于整个制造过程
随着电动汽车等电池供电应用越来越广泛,全球对锂离子电池等高性能电池的需求也在增加。制造现代电池的挑战是最大化其能量密度,降低其制造成本并延长其使用寿命。为了实现这些目标,Micro-Epsilon的传感器被用于整个制造过程。他们执行各种测量任务,用于机器监控、厚度控制和质量保证。
用户10384942
2023/05/09
1460
ABB OCAHG 用于整个制造过程
在Parallel中使用DbSet.Add()发现的一系列多线程问题和解决过程
需求很简单,大致就是要批量往数据库写数据,于是打算用Parallel并行的方式写入,希望能利用计算机多核特性加快程序执行速度。想的很美好,于是快速撸了类似下面的一串代码:
HOHO
2020/04/27
4490
MVME2604 712I/O 用于交换过程值的通信过程
PROFIBUS标准已有20多年的历史,是一种成熟的数字现场总线技术,用于许多工厂和过程自动化应用,以及食品、饮料和制药等混合行业。根据PROFIBUS和PROFINET国际(PI)协会,2015年销售了超过5000万台PROFIBUS设备,并且这个数字还在继续增长。让我们更深入地了解PROFIBUS,包括它是什么以及它是如何工作的。
用户10384942
2023/04/17
2330
MVME2604 712I/O 用于交换过程值的通信过程
怎样使用过程自动化来实现过程的习惯性和持久性?
CMMI的一个核心概念是维持习惯性和持久性。CMMI V2.0对这两个概念的解释如下:
IPD产品研发管理
2021/05/10
2560
怎样使用过程自动化来实现过程的习惯性和持久性?
MySQL如何获取存储过程参数?
前两天有个小伙伴问我如何查看MySQL存储过程的参数问题,这个问题还真把我问住了。于是查了查官方文档,把查看的结果分享出来,希望对大家有帮助吧。
AsiaYe
2022/12/07
3.5K0
Jenkins获取JENKINS_HOME过程
系统管理→系统设置→主目录  (<JENKINS_URL>/configure页面)
donghui
2019/04/19
4.5K0
Jenkins获取JENKINS_HOME过程
Universal-Image-Loader源码解解析---display过程 + 获取bitmap过程
Universal-Image-Loader在github上的地址:https://github.com/nostra13/Android-Universal-Image-Loader
yuanyuan
2019/09/10
8450
Git忽略规则和.gitignore规则不生效的解决办法
在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如果没有这个文件,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:
用户1065635
2019/03/21
1K0
如果TCP发生超时,这个过程是如何处理的?
TCP本身需要提供可靠的服务,方式之一就是确认接收方真的收到了数据,如果过了一段时间,即超时了,还没有收到确认的报文,认为报文可能被丢失,就重新传送报文,确保数据都能被收到
爬蜥
2019/07/09
1.7K0
入门者:该如何实施数据分析的过程?
数据分析是指通过建立审计分析模型对数据进行核对、检查、复算、判断等操作,将被审计单位数据的现实状态与理想状态进行比较,从而发现审计线索,搜集审计证据的过程。 数据分析过程的主要活动由识别信息需求、收集数据、分析数据、评价并改进数据分析的有效性组成。 一、识别信息需求 识别信息需求是确保数据分析过程有效性的首要条件,可以为收集数据、分析数据提供清晰的目标。识别信息需求是管理者的职责管理者应根据决策和过程控制的需求,提出对信息的需求。就过程控制而言,管理者应识别需求要利用那些信息支持评审过程输入、过程输出、
小莹莹
2018/04/20
6430
入门者:该如何实施数据分析的过程?
如果在BackgroundWorker运行过程中关闭窗体…
在Windows Form应用中,BackgroundWorker 类允许您在单独的专用线程上运行操作。耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 似乎处于停止响应状态。如果您需要能进行响应的用户界面,而且面临与这类操作相关的长时间延迟,则可以使用 BackgroundWorker 类方便地解决问题。由于操作是异步执行的,用户可能在异步操作执行过程中关闭当前窗体,而窗体的关闭会伴随着Dispose方法的执行。如果我们注册了BackgroundWorker的RunWorkerC
蒋金楠
2018/02/07
1.3K0
如果在BackgroundWorker运行过程中关闭窗体…
mybaits使用存储过程
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117668.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
3970
MySQL 存储过程的简单使用
首先创建一张 students 表 SQL脚本如下: create table students( id int primary key auto_increment, age int, name varchar(20), city varchar(20) ) character set utf8; insert into students values(null, 22, 'lisa', '杭州'); insert into students values(null, 1
nnngu
2018/03/15
1.6K0
MySQL 存储过程的简单使用
使用javac编译源码的过程
包括解析包括词法分析和语法分析。 词法解析:将源代码的字符流(每个字符)转变为标记(token,比如int a=b+2包括6个标记)集合。 语法分析:将token集合构造成抽象语法树(AST,用树形结构描述代码语法结构)。 填充符号表:主要记录抽象语法树的顶级节点。
用户7718188
2021/10/08
1K0
获取运行过程中改名的文件的路径
原本以为这是一个非常简单的 CASE,直接用 GetModuleFileName 不就行了吗?结果还真不如我所想。无论程序运行过程中被改名成什么样子,GetModuleFileName 返回的都是 EXE 开始运行时的名字。然后又尝试了 GetProcessImageFileName,也是如此,直到最后找到了 QueryFullProcessImageName。
mzlogin
2020/04/16
1.8K0
获取运行过程中改名的文件的路径
获取运行过程中改名的文件的路径
原本以为这是一个非常简单的 CASE,直接用 GetModuleFileName 不就行了吗?结果还真不如我所想。无论程序运行过程中被改名成什么样子,GetModuleFileName 返回的都是 EXE 开始运行时的名字。然后又尝试了 GetProcessImageFileName,也是如此,直到最后找到了 QueryFullProcessImageName。
零式的天空
2022/03/28
1.4K0
在IDEA中利用ignore插件忽略Git非必要提交的文件
在IEDA中,使用Maven建多工程编写代码时,常常会遇到提交代码到Git上,会把非工程相关的代码或配置文件提交GitLab仓库里,确实是一件麻烦的事情。
猿芯
2020/07/06
2.8K0
点击加载更多

相似问题

如果存储过程在执行过程中失败,则不执行存储过程

140

创建一个存储过程,该存储过程使用(如果不是)来决定新列中的内容

10

运行存储过程是否需要DbSet?

117

如果从VBA执行存储过程,则不返回数据

13

如果变量为空,则不过滤的存储过程

30
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文