zoukankan      html  css  js  c++  java
  • MvcScaffolding: OnetoMany Relationships

    安装更新 MvcScaffolding

    Update-Package MvcScaffolding
    Install-Package MvcScaffolding

    定义一个Team与Player一对多的关系

     创建一个小组实体类

    public class Team
    {
        public int TeamId { get; set; }
        [Required] public string Name { get; set; }
        public string City { get; set; }
        public DateTime Founded { get; set; }
    }

    加入一个球员与小组的关系

    public class Player
    {
        public int PlayerId { get; set; }
        public string Name { get; set; }
     
        // Having a property called <entity>Id defines a relationship
        public int TeamId { get; set; }
    }

    通过http://....../Team创建几个小组

    通过http://..../Playser建立几个球员,创建时选择球队。

    通过以上方式创建的代码,不能查看球队里边球员,原因是Team与Player没有建立关系

    更新Player代码如下,告诉player属于球队

    public class Player
    {
        public int PlayerId { get; set; }
        public string Name { get; set; }
        public int TeamId { get; set; }
     
        public virtual Team Team { get; set; } // This is new
    }
    virtual使用该属性实现延迟加载,相关的实体内容根据需要被提取

    Team中有球员的属性

    public class Team
    {
        public int TeamId { get; set; }
        [Required] public string Name { get; set; }
        public string City { get; set; }
        public DateTime Founded { get; set; }
     
        public virtual ICollection<player> Players { get; set; } // This is new
    }

    通过如下命令创建

    Scaffold Controller Team -Force
    Scaffold Controller Player -Force

    预先加载和SELECT N +1

    // This is on PlayersController
    public ViewResult Index()
    {
        return View(context.Players.Include(player => player.Team).ToList());
    }

    仓储模式

    Scaffold Controller Team -Repository -Force
    Scaffold Controller Player -Repository -Force
    public PlayersController(ITeamRepository teamRepository, IPlayerRepository playerRepository)
    {
        this.teamRepository = teamRepository;
        this.playerRepository = playerRepository;
    }
    // This is on PlayersController
    public ViewResult Index()
    {
        return View(playerRepository.GetAllPlayers(player => player.Team));
    }

    定义更复杂的模型类之间的关系

    public class Player
    {
        public int PlayerId { get; set; }
        public string Name { get; set; }
     
        // This links Player to Team
        public int TeamId { get; set; }
    }
    public class Team
    {
        public int TeamId { get; set; }
        // ... other Team properties go here
     
        // Each Team has an optional "next opponent" which is another Team
        public int? NextOpponentId { get; set; }
        [ForeignKey("NextOpponentId")] public virtual Team NextOpponent { get; set; }
     
        // Each Team also has a required Manager and Administrator, both of which are people
        public int ManagerId { get; set; }
        public int AdministratorId { get; set; }
        [ForeignKey("ManagerId")] public virtual Person Manager { get; set; }
        [ForeignKey("AdministratorId")] public virtual Person Administrator { get; set; }
    }
  • 相关阅读:
    C#反射概念以及实例详解【转】
    .NET(C#):使用反射来获取枚举的名称、值和特性【转】
    探求C#.Net中ArrayList与Array的区别 【转】
    C#中IList<T>与List<T>的区别感想【转】
    C# System.Guid.NewGuid() 【转】
    回车键触发按钮事件
    MVC中Json的使用:Controller中Json的处理【转】
    关于优化性能<主要是速度方面>的个人心得 【转】
    ca72a_c++_标准IO库:面向对象的标准库
    ca71a_c++_指向函数的指针_通过指针调用函数txwtech
  • 原文地址:https://www.cnblogs.com/lujianwei/p/2987322.html
Copyright © 2011-2022 走看看