【问题标题】:ASP.net MVC Entity frameworkASP.net MVC 实体框架
【发布时间】:2015-05-27 11:39:04
【问题描述】:

我尝试了很多东西,但在实体框架 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; }

}

【问题讨论】:

  • 这是一个非常广泛的问题。我认为您应该尝试将其拆分为几个问题,或者再具体说明一下。
  • 为了帮助您,您可以生成代码优先模型,这样您就不必手动编写这些东西了。见msdn.microsoft.com/en-us/library/jj200620.aspx
  • 我只使用了代码优先模型现在我不知道我被困在两者之间,是的,这是一个广泛的问题,我只想知道如何从自动创建的结合表中保存和检索数据PersonId 和 ClubId 作为集群主键和外键
  • 这对 SO 来说太宽泛了。我建议你找一个教程;这看起来更像你需要的。
  • 还有,因为你是新来的。不要忘记标记正确答案,如果您找到解决方案,请在此处发布,以便其他人学习。

标签: c# asp.net asp.net-mvc asp.net-mvc-4


【解决方案1】:
【解决方案2】:

多对多关系是使用联结表定义的。至于Controllers是如何实现的,试试这个:http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/creating-a-controller-cs

【讨论】:

  • 我知道如何创建控制器,但我不知道创建和其他方法的代码应该是什么,因为它们是通过多对多关系连接的
  • 我想知道联结表将如何使用如何在其中存储数据以及如何从中检索
【解决方案3】:

模型-视图-控制器中的模型不应该关心经理如何链接到数据库中的俱乐部。应该只关心他们相关而不是如何

我会这样做:

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

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

【讨论】:

  • 我阅读了所有这些内容并以类似的方式实现了但我不知道如何在控制器中使用该联结表
【解决方案4】:

最后它现在可以工作了,我只需要在我的控制器中添加几行。我的 Final Assign Club 看起来像这样,并且运行良好

[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");
}

【讨论】:

    猜你喜欢
    • 2020-05-26
    • 2010-09-25
    • 1970-01-01
    • 2012-10-18
    • 2011-02-20
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多