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; }
        }
    }

      

      

  • 相关阅读:
    关于平衡树的一些总结
    bzoj3065 带插入区间K小值
    bzoj2560 串珠子
    bzoj3224 Tyvj 1728 普通平衡树
    bzoj1031 [JSOI2007]字符加密Cipher
    bzoj4571 [Scoi2016]美味
    集合框架—常见的Set集合
    集合框架—两种迭代机制
    集合框架—基础
    网络编程—代码—UDP数据报传输
  • 原文地址:https://www.cnblogs.com/tofight/p/14645284.html
Copyright © 2011-2022 走看看