繁体   English   中英

ASP.net MVC实体框架

[英]ASP.net MVC Entity framework

我尝试了很多事情,但是在实体框架ASP.NET MVC中实现以下内容时遇到了问题。 请分步告诉我我应该怎么做来实现控制器和视图。 我很困惑如何实现俱乐部与经理之间的多对多关系

经理模式

public class Manager:Person
{
        public Manager()
        {
            Clubs = new HashSet<Club>();
        }
        public string AssignedDuty { get; set; }
        public System.DateTime AssignedDate { get; set; }
        public virtual ICollection<Club> Clubs { get; set; }
}

俱乐部模型

public class Club
{
    public Club()
    {
        this.Memberships = new HashSet<Membership>();
        this.People = new HashSet<Manager>();
    }

    public int ClubId { get; set; }
    public string ClubName { get; set; }
    public System.DateTime OpenDate { get; set; }


    public virtual Center Center { get; set; }
    public virtual ICollection<Membership> Memberships { get; set; }

    public virtual ICollection<Manager> People { get; set; }

}

使用联结表定义多对多关系。 至于控制器的实现方式,请尝试以下操作: http : //www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-a-controller-cs

您在模型-视图-控制器中的模型不应该关注管理器如何链接到数据库中的俱乐部。 应该只关心它们之间的关系而不是如何

我会这样做:

  • 在您的DB / EntityFramework中,使用说明表并链接到Juann Strauss的联结表
  • 从数据库加载数据时(如在OnModelCreating事件中),将填充该关系

这是一篇博客文章,似乎在解释您要完成的任务: http : //www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

现在终于可以正常工作了,我只需要向控制器添加几行即可。 我的最终指定俱乐部看起来像这样,并且运作良好

[HttpPost, ActionName("AssignClub")]
public ActionResult AssignClub(AssignClubVM ac)
{
        Manager m = db.Managers.Find(ac.manager.PersonId);
        foreach (var clubid in ac.SelectedClubs)
        {
            m.Clubs.Add(db.Clubs.Find(clubid));
        }
        db.SaveChanges();
        return RedirectToAction("Index");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM