zoukankan      html  css  js  c++  java
  • 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; }
        }
    }

      

      

  • 相关阅读:
    VMware虚拟机下网络配置模式
    2021考研规划(持续更新)
    20210326 名词解释及常用下载地址(持续更新)
    20210326学习笔记1---java及hadoop组件最新版本汇总
    20210326日记
    20210325一天总结--进步最大的一天
    20210325学习感悟--学习是开始几小时烦躁,越学习越上瘾;暴食看剧打游戏打飞机,最开始爽,时间越长越厌倦甚至感觉痛苦。
    20210326继续解决----20210325学习笔记2--运行MapReduce Jar(我为什么这样起标题,因为结构化数据才好搜索)
    20210325学习笔记1--解决了打包不生成jar文件的问题
    20210325日记--加油,相信只要基础够扎实熟练,就能找到转职成功。
  • 原文地址:https://www.cnblogs.com/tofight/p/14645284.html
Copyright © 2011-2022 走看看