• Entity Framework Core 3.1 学习笔记3 一对一 多对多 一对多


    一对一模型的建立:

    示例:足球队员和简历的一对一关系:每个足球队员需要对应一份简历信息

    足球队员模型:

    using System;
    using System.Collections.Generic;
    
    namespace Demo.Domain
    {
        public class Player
        {
            public Player() {
                GamePlayer = new List<GamePlayer>();
            }
            public int Id { get; set; }
    
            public string Name { get; set; }
    
            public DateTime DateOfBirth { get;set; }
    
            public List<GamePlayer> GamePlayer { get; set; }
    
            public int ResumeId { get; set; }
    
    
            public Resume Resume { get; set; }
        }
    }

    简历模型:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Demo.Domain
    {
        public class Resume
        {
            public int Id { get; set; }
    
            public string Description { get; set; }
    
            public int PlayerId { get; set; }
    
            public Player Player { get; set; }
        }
    }

    在Player中定义 ResumeId和Resume模型,在Resume表中定义PlayerId和Player模型

     在DataContext中定义两者的关系

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    
    modelBuilder.Entity<Resume>().HasOne(x=>x.Player).WithOne(x=>x.Resume).HasForeignKey<Resume>(x=>x.PlayerId);
    }

    多对多的关系模型

    示例:一场联赛有很多足球队员:每个足球队员可以参加多个联赛

    联赛模型:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Demo.Domain
    {
        public class Game
        {
            public Game() {
                GamePlayer = new List<GamePlayer>();
            }
            public int Id { get; set; }
    
            public int Round { get; set; }
    
            public DateTimeOffset? StartTiem { get; set; }
    
            public List<GamePlayer> GamePlayer { get; set; }
        }
    }

    足球队员模型:

    using System;
    using System.Collections.Generic;
    
    namespace Demo.Domain
    {
        public class Player
        {
            public Player() {
                GamePlayer = new List<GamePlayer>();
            }
            public int Id { get; set; }
    
            public string Name { get; set; }
    
            public DateTime DateOfBirth { get;set; }
    
            public List<GamePlayer> GamePlayer { get; set; }
    
            public int ResumeId { get; set; }
    
    
            public Resume Resume { get; set; }
        }
    }

    足球队员跟联赛关系模型:

    using System;
    using System.Collections.Generic;
    using System.Text;
    
    namespace Demo.Domain
    {
        public class GamePlayer
        {
            public int PlayerId { get; set; }
    
            public int GameId { get; set; }
    
    
            public Game Game { get; set; }
    
            public Player Player { get; set; }
        }
    }

    在DataContext中定义两者的关系

    protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<GamePlayer>().HasKey(x =>  new{ x.PlayerId, x.GameId });
              
            }

    一对多的关系模型

    示例:一个俱乐部有多个很多足球队员

    定义俱乐部模型:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace Demo.Domain
    {
        public class Club
        {
            public Club() {
                Players = new List<Player>();
            }
    
            public int Id { get; set; }
    
            public string Name { get; set; }
    
    
            public string City { get; set; }
    
            [Column(TypeName ="date")]
            public DateTime DateOffEstablishment { get; set; }
    
            public string History { get; set; }
    
            public League League { get; set; }
    
            public List<Player> Players { get; set; }
        }
    }

    定义足球队员模型:

    using System;
    using System.Collections.Generic;
    
    namespace Demo.Domain
    {
        public class Player
        {
            public Player() {
                GamePlayer = new List<GamePlayer>();
            }
            public int Id { get; set; }
    
            public string Name { get; set; }
    
            public DateTime DateOfBirth { get;set; }
    
            public List<GamePlayer> GamePlayer { get; set; }
    
            public int ResumeId { get; set; }
    
    
            public Resume Resume { get; set; }
        }
    }

      

      

  • 相关阅读:
    稳定性「三十六计」- 无状态化
    设置默认的超时和重试是一个基础设施的基本素养
    「前任的50种死法」开发踩坑案例--慢就是错
    稳定性「三十六计」- 配额管控
    编写代码的「八荣八耻」- 以开关上线为荣,以自信编码为耻
    Kubernetes的DaemonSet(下篇)
    使用Elasticsearch的动态索引和索引优化
    Kubernetes的DaemonSet(上篇)
    程序媛的人生观
    Kubernetes的污点和容忍(下篇)
  • 原文地址:https://www.cnblogs.com/tofight/p/14645284.html
Copyright © 2020-2023  润新知