EF Core 映射关系及取数据(急等高手)

佛祖的木鱼 2019-07-15 12:57:24
我现在准备用EF Core从现有的数据库里取数据出来,有三张表:

其中,一个JobHeader可以包含多个JobOperation,关联键是JobNum, 同样的一个JobOperation,可以包含多个OprTransactions,关联键是JobNum+OpCode

请问我怎样用EF Core来定义映射关系并取值呢?

public class JobHeader
{
[Key]
public string JobNum { get; set; }
public string PartNum { get; set; }
}

public class JobOperation
{
[Key]
public int Id { get; set; }
public string JobNum { get; set; }
public string OpCode { get; set; }

}

public class OprTransactions
{
[Key]
public int Id { get; set; }
public string JobNum { get; set; }
public string OpCode { get; set; }
public string TransType { get; set; }
}

希望取值的内容如下:

{
"jobNum": "000025172-0009",
"partNum": "CIB-75-00024KT-A",
"JobOperation": [
{
"jobNum": "000025172-0009",
"opCode": "NF01",
"OprTransactions": [
{
"id": 1,
"jobNum": "000025172-0009",
"opCode": "NF01",
"transType": "OPRSTART",
},
{
"id": 2,
"jobNum": "000025172-0009",
"opCode": "NF01",
"transType": "OPREND",
}
]
},
{
"jobNum": "000025172-0009",
"opCode": "NF34",
"OprTransactions": [
{
"id": 3,
"jobNum": "000025172-0009",
"opCode": "NF34",
"transType": "OPRSTART",
}
]
}
]
}
...全文
6914 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
小强清风 2021-03-31
  • 打赏
  • 举报
回复
这不就是多对多的关系吗
jhonsonzhang 2021-03-28
  • 打赏
  • 举报
回复
定义dbcontext啊,你想怎么取,就怎么取!取不出来再把代码虚心贴出来,我还是有那么一点小信心的,高手多的是,具体都是代码说话,什么映射关系都是多余的,你取数据时候用linq lamada进行相应操作就可以了。
qq_35340878 2021-01-05
  • 打赏
  • 举报
回复
用单个表,得到每个表数据在用匿名方式拼接数据
叫我 Teacher 周 2019-08-16
  • 打赏
  • 举报
回复
EF 里有一种特殊的设计叫做导航属性。
佛祖的木鱼 2019-07-23
  • 打赏
  • 举报
回复
你这只是定义了映射关系,并没有告之如何取数据哦。。。
d383137359 2019-07-19
  • 打赏
  • 举报
回复
你这个简单

public class JobHeader
    {
        [Key]
        public string JobNum { get; set; }
        public string PartNum { get; set; }
        public virtual List<JobOperation> JobOperations{get;set;}
    }

    public class JobOperation
    {
        [Key]
        public int Id { get; set; }
        public string JobNum { get; set; }
        public string OpCode { get; set; }
        public virtual List<OprTransactions> OprTransactions{get;set;}
    }

    public class OprTransactions
    {
        [Key]
        public int Id { get; set; }
        public string JobNum { get; set; }
        public string OpCode { get; set; }
        public string TransType { get; set; }
    }

//然后你最后把 JobHeader.toJson();就是你上面那个结果了
佛祖的木鱼 2019-07-16
  • 打赏
  • 举报
回复
多谢回复。感觉应该不复杂,只是平常较少用EF Core.....
XBodhi. 2019-07-15
  • 打赏
  • 举报
回复
我格式 其实不太喜欢 这种方式,虽然快捷。因为可读性比较差。
XBodhi. 2019-07-15
  • 打赏
  • 举报
回复
EF 不是特别熟悉。不过我觉得 DbContext 里有 Entity 的感念,你可以用 EntityConnection 和 EntityCommand 来看看,然后重写 CreatingModel 和 CreatingTable ,你可以 LINQ TO SQL 的方式来序列化下看看。

因为写的比较少。也不太喜欢这种方式。所以 平时很少用。

给你个帖子推荐下 https://www.cnblogs.com/libingql/p/4052906.html

佛祖的木鱼 2019-07-15
  • 打赏
  • 举报
回复
坐等高手啊 等到答案就结贴!
内容概要:本文详细介绍了EF Core Code First模式的完整开发流程,涵盖项目创建、依赖安装、实体类与DbContext配置、数据库迁移及CRUD操作实战。通过定义User和Order实体类,并使用数据注解与Fluent API进行映射配置,实现了数据库表结构的自动化生成。文档重点讲解了如何通过OnModelCreating方法配置表名、字段类型、索引、外键关系及级联删除等高级特性,并演示了使用Migrations将代码变更同步至数据库的方法。最后通过WinForms前端实现数据的增删改查与分页查询等功能,全面展示了EF Core在实际项目中的应用。; 适合人群:具备C#基础和一定数据库经验的.NET开发者,尤其适合初学者学习EF Core Code First模式的核心概念与实践技巧;也适用于希望掌握实体映射数据库迁移和ORM操作的中级开发人员。; 使用场景及目标:①学习EF Core中Code First模式的工作机制;②掌握实体配置(数据注解与Fluent API)、数据库迁移命令(Add-Migration、Update-Database)的使用;③实现基于WinForms或Web项目的快速数据访问层搭建;④理解导航属性、一对多关系、级联删除等常见业务场景的实现方式; 阅读建议:建议读者按照文档步骤逐步实践,重点关注DbContext的配置逻辑与实体关系映射,结合迁移命令观察数据库变化,同时可通过调试程序理解EF Core的查询与保存行为,加深对ORM框架运行机制的理解。

8,492

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧