Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >实体框架4.3.1获取数据时代码优先关系不起作用

实体框架4.3.1获取数据时代码优先关系不起作用
EN

Stack Overflow用户
提问于 2012-04-28 20:19:34
回答 1查看 907关注 0票数 2

这是我第一次使用Entity Framework4.3.1在C#中创建项目。我在从锦标赛表格中获取所有数据时遇到了麻烦,准确地说是地址。

首先,这是我的code First代码。当我运行这段代码时,这两个表被正确地创建并具有正确的关系。我在这些类中定义了更多的列,但在本例中我只显示了几个列。

代码语言:javascript
运行
AI代码解释
复制
public class EFDbContext : DbContext
{
    public EFDbContext()
        : base("ApplicationServices")
    {
    }

    public DbSet<Tournament> tournaments { get; set; }
    public DbSet<Address> addresses { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

    public class Tournament
    {
        [ScaffoldColumn(false)]
        public int TournamentId { get; set; }


        [Required(ErrorMessage="Tournament name is a required field")]
        public string Name { get; set; }


        [Required(ErrorMessage="Address is a required field")]
        public Address Address { get; set; }
    }

    public class Address
    {   
        [ScaffoldColumn(false)]
        public int AddressId { get; set; }


        [Required(ErrorMessage="Street name is a required field")]
        public string Street { get; set; }


        [Required(ErrorMessage="House number is a required field")]
        public string HouseNo { get; set; }
    }
}

当我插入一个带有地址的新锦标赛时,我去数据库中检查是否使用了该关系,我可以看到它起作用了。锦标赛有一个指向新插入地址的Address_AddressId值。但是当我尝试通过这样做来获取信息时:

代码语言:javascript
运行
AI代码解释
复制
Tournament tournament = context.tournaments.Find(id);

我对它进行了调试,我可以看到除了地址之外,所有来自锦标赛的数据都在锦标赛对象中。这被设置为null,我完全不知道为什么。

你们能帮帮我吗?

先谢谢你,巴特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-29 15:01:22

您需要熟悉一下如何使用实体框架加载相关数据。这里有一个介绍:http://blogs.msdn.com/b/adonet/archive/2011/01/31/using-dbcontext-in-ef-feature-ctp5-part-6-loading-related-entities.aspx,这些都是你需要知道的基础知识,才能有效地使用实体框架。

您所看到的行为是意料之中的。实体框架不会在您只加载父实体Tournament (在您的示例中使用Find )时自动加载导航属性,如Tournament.Address

加载相关数据基本上有三种选择:

  • 急切加载:

锦标赛= context.tournaments .Include(t => t.Address) // <-“急切加载”.SingleOrDefault(t => t.TournamentId == id);

我们将在单个往返和数据库查询中加载锦标赛和地址。

  • 延迟加载:将导航属性标记为virtual

公共虚拟地址{ get;set;}

EF将在您加载锦标赛时动态创建一个代理对象(从Tournament派生),该对象能够在您访问其属性之一时立即加载相关实体:

锦标赛= context.tournaments.Find(id);字符串街= tournament.Address.Street;//第二次查询DB发生here

  • Explicit加载:

锦标赛= context.tournaments.Find(id);context.Entry(锦标赛).Reference(t => t.Address).Load();//这里发生了对DB的第二次查询

这类似于延迟加载,因为您还需要对数据库进行两次查询和往返,但您可以显式控制何时加载Address。显式加载具有筛选或排序相关数据(在导航集合的情况下)的选项,这是其他两个选项所不具备的。

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

https://stackoverflow.com/questions/10367201

复制
相关文章
「数据架构」实体关系模型溯源
实体-关系模型(或ER模型)描述特定知识领域中相关的事物。基本的ER模型由实体类型(对感兴趣的事物进行分类)和指定实体之间可能存在的关系(那些实体类型的实例)组成。
架构师研究会
2019/12/24
1.7K0
Hibernate实体关系映射
上一篇文章我们学习了Hibernate的框架搭建,并且完成了单表的CRUD操作,今天我们来学习Hibernate中的多表关联。
南风
2019/04/22
1.1K0
Hibernate实体关系映射
「数据架构」什么是实体关系图(ERD)?
数据库绝对是软件系统不可分割的一部分。在数据库工程中充分利用ER关系图,可以保证在数据库创建、管理和维护中产生高质量的数据库设计。ER模型还提供了一种通信手段。
架构师研究会
2019/12/24
5.3K0
实体-联系图(ER图)_实体关系图
我们通常用实体、联系和属性这三个概念来理解现实问题,因此ER模型比较接近人的思维方式。此外,ER模型用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机技术的用户也能理解它,因此,ER模型可以作为用户与分析员之间有效的交流工具。
全栈程序员站长
2022/09/29
2.4K0
实体-联系图(ER图)_实体关系图
数据库MySQL-实体之间的关系
答:在字段数量很多情况下,数据量也就很大,每次查询都需要检索大量数据,这样效率低下。我们可以将所有字段分成两个部分,“常用字段”和“不常用字段”,这样对大部分查询者来说效率提高了。【表的垂直分割】
cwl_java
2020/03/27
1.7K0
【数据架构】SOGAF 通用实体框架 (CoE)
Salesforce 运营、治理和架构框架 (SOGAF) 将 MIT-CISR 企业架构框架应用于 Salesforce 实施和程序。 介绍 为共同实体(即卓越中心)制定一个明确的定义是很棘手的。转换程序中的通用实体 (CoE) 有多种名称: “卓越中心”、“C4E”、“专业中心”、“专家网络” 术语“设计授权”或“平台授权”也用于通用实体,这会造成一些混淆 不同的描述会导致不同的期望——当没有得到满足时会感到沮丧 此类问题在难以确定是转型、能力还是最佳实践中心的实体中很常见 共同实体也可以扮演任意数
架构师研究会
2022/04/19
1.5K0
【数据架构】SOGAF 通用实体框架 (CoE)
SqlServer示例数据库Northwind(一)——实体关系
在学习Spss统计分析、EA画实体关系图、PowerDesigner画数据库模型图等时,苦于找不到一个好的实例。由于实际工作中项目使用的表结构属于公司的商业保密内容,且在和大家交流时,其结构大家也不熟悉;而使用简单创建的Teacher、Student、Class等数据模型时,建表、录数据也是一个麻烦事;使用SqlServer的示例数据库正好,大伙都熟悉,又是现成的。 很多书籍、教程都使用Northwind数据库作为模型,但我一直对它不甚了解,今天特意下载后了解了一下,现在简单的记录下笔记,以后依次进行Sps
用户1637609
2018/04/12
2K0
SqlServer示例数据库Northwind(一)——实体关系
数据库:实体关系图(ER图)「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/152022.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/31
10.3K0
数据库:实体关系图(ER图)「建议收藏」
什么是实体关系图(ERD)?
实体 - 关系(ER)图(也称为ERD或ER模型)是Peter最初在1976年提出的经典且流行的概念数据模型。它是系统内不同实体的视觉表示以及它们如何相互关联。实体关系图广泛用于设计关系数据库。ER模式中的实体成为表,属性和转换的数据库模式。由于它们可用于可视化数据库表及其关系,因此它通常也用于数据库故障排除。
Warren2Lynch
2018/07/23
6.6K0
什么是实体关系图(ERD)?
提升PLM实体与关系理解,ERICA一个框架就够了
机器之心专栏 作者:秦禹嘉 在这篇被 ACL 2021 主会录用的文章中,研究者提出了 ERICA 框架,通过对比学习帮助 PLM 提高实体和实体间关系的理解,并在多个自然语言理解任务上验证了该框架的有效性。 近年来,预训练语言模型(PLM)在各种下游自然语言处理任务中表现出卓越的性能,受益于预训练阶段的自监督学习目标,PLM 可以有效地捕获文本中的语法和语义,并为下游 NLP 任务提供蕴含丰富信息的语言表示。然而,传统的预训练目标并没有对文本中的关系事实进行建模,而这些关系事实对于文本理解至关重要。
机器之心
2023/03/29
4810
提升PLM实体与关系理解,ERICA一个框架就够了
ER图转关系模型_实体关系图变关系模型
将每个实体类型转换成一个关系模式,实体的 属性 即为关系的 属性,实体标识符即为关系的键。
全栈程序员站长
2022/11/15
2.8K0
ER图转关系模型_实体关系图变关系模型
Power Pivot里的表间关系不起作用?
小勤:那有什么意义?反正我放了值进去都会起作用的,自然就变成了其相对应的关系了,干嘛不直接在拉字段到行字段的时候就限制好呢?
大海Power
2021/08/30
1.7K0
ERICA:提升预训练语言模型实体与关系理解的统一框架
近年来,预训练语言模型(PLM)在各种下游自然语言处理任务中表现出卓越的性能,受益于预训练阶段的自监督学习目标,PLM 可以有效地捕获文本中的语法和语义,并为下游 NLP 任务提供蕴含丰富信息的语言表示。然而,传统的预训练目标并没有对文本中的关系事实进行建模,而这些关系事实对于文本理解至关重要。
AI科技评论
2021/07/03
7670
ERICA:提升预训练语言模型实体与关系理解的统一框架
使用Bert完成实体之间关系抽取
Source Text: 《在夏天冬眠》是容祖儿演唱的一首歌曲,收录于专辑《独照》中
机器学习AI算法工程
2022/02/28
1.8K0
使用Bert完成实体之间关系抽取
yii2.0关联关系获取数据hasOne()
//在数据模型中写此方法 public function getOrderEvaluate() { //Order_Evaluate表的order_id 与本数据表的id相等(这里是order表) return static::hasOne(OrderEvaluate::className(), ['order_id' => 'id']); } 在控制器中调用 public function actionInfo($id) { $model = $this->findModel($i
botkenni
2022/03/24
5630
Rafy 领域实体框架简介
按照最新的功能,更新了最新版的《Rafy 领域实体框架的介绍》,内容如下: 本文包含以下章节: 简介 特点 优势 简介 Rafy 领域实体框架是一个轻量级 ORM 框架。 与一般的 ORM 框架不同的是,它不只关注于一般性的面向对象实体与关系数据库的映射,而是更关注于富领域模型(聚合实体)与关系数据库的映射。使得开发者可以非常方便地使用富领域模型的同时,配备强大的实体属性设计、查询功能,并兼顾了极高的开发效率。 该框架可脱离 Rafy 框架其它组件独立运行,同时集领域驱动设计、面向服务架构、模型驱动架构、产
用户1172223
2018/01/30
1.5K0
ofbiz实体引擎(一) 获取Delegator
public abstract class DelegatorFactory implements Factory<Delegator, String> { public static final String module = DelegatorFactoryImpl.class.getName(); private static final ConcurrentHashMap<String, Future<Delegator>> delegators = new ConcurrentHa
cfs
2018/03/08
9530
数据获取:认识HTML代码
一个网页通常是由HTML元素、CSS样式和JavaScript脚本组成,但是对于数据采集来说,有用的只有HTML元素。通俗一点讲,网页就是一个房子,html就是简单的毛坯,CSS就是给房子来个精装修,Js脚本就是给房子通上了水电。要是把房子的精装修拆除,房子也可以用,就是有点难看,网页也是一样,把CSS样式拿走,内容还在,但是就不太美观。一个网页的大体结构如下:
马拉松程序员
2023/09/02
2020
数据获取:认识HTML代码
Bika LIMS 开源LIMS集——ERD实体关系定义(数据库设计)
使用ZODB,关于Bika LIMS的技术架构,链接:https://www.cnblogs.com/mahongbiao/p/16389882.html
用户1637609
2022/06/20
7360
Bika LIMS 开源LIMS集——ERD实体关系定义(数据库设计)
学界 | ReQuest: 使用问答数据产生实体关系抽取的间接监督
选自 arXiv 机器之心编译 参与:Nurhachu Null、李泽南 在这篇伊利诺伊大学、南加州大学与上海交大合作的 WSDM 2018 论文中,研究人员提出了一个全新框架:ReQuest,它可以借助问答数据作为实体关系提取的一个间接监督源,这种方法可以用于减少从知识库中产生监督信息而伴随产生的噪声,为关系提取任务提供间接,有效的训练数据。ReQuest 框架可以将隐藏于问答数据 (以及用户反馈信息) 内的关于实体关系的知识迁移到实体关系抽取任务上,提升信息抽取系统的效能。 关系提取是一项重要的任务,通
机器之心
2018/05/09
9190
学界 | ReQuest: 使用问答数据产生实体关系抽取的间接监督

相似问题

实体框架代码优先关系

21

实体框架-代码优先-关系

28

实体框架代码优先-关系

18

实体框架关系,代码优先

14

实体框架-代码优先关系映射

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档