如何使用MVC3检索数据多对多关系和EF4.1模型优先?

时间:2012-02-11 18:40:42

标签: .net asp.net-mvc-3 razor entity-framework-4.1 ef-model-first

我是一个非常初学者,我想做一些非常简单的事情,我想我错过了一些东西,但我找不到答案。

我有两个表与EF4.1映射的多对多关系

public partial class Activity
{
    public Activity()
    {
        this.Pack = new HashSet<Pack>();
    }

    public int ActivityId { get; set; }
    public string Type { get; set; }
    public string Title { get; set; }
    public string Price { get; set; }    
    public virtual ICollection<Pack> Pack { get; set; }
}

public partial class Pack
{
    public Pack()
    {
        this.Activity = new HashSet<Activity>();
    }

    public int PackId { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Price { get; set; }

    public virtual ICollection<Activity> Activity { get; set; }
}

生成了一个上下文类:

public partial class EvgDatabaseEntities : DbContext
{
    public EvgDatabaseEntities()
        : base("name=EvgDatabaseEntities")
    {
    }
    public DbSet<Pack> PackSet { get; set; }
    public DbSet<Activity> ActivitySet { get; set; }
}

在我的索引视图中,我只需要显示Pack中的数据以及与此包相关的活动。

这是控制器:

public ActionResult Index()
{
    var packs = evgDB.PackSet.Include("Activity").ToList();
    return View(packs);
}

以下是我希望在我看来做的事情:

@model IEnumerable<myEvg.Models.EvgDatabaseEntities>
@{
    ViewBag.Title = "Index";
}
@foreach (var pack in Model)
{
    //SHOW PACK.ID PACK.DESCRIPTION
    //SHOW THE ACTIVITIES RELATED TO THIS PACK 
}

这样做的最佳方式/做法是什么? 我可以通过在我的EDM中创建第三个表来做到这一点,但是有可能创建一个原生的多对多关系呢?

对不起,如果你觉得很明显,那不是我,我只是个初学者。

1 个答案:

答案 0 :(得分:-1)

以下是如何在Code First中执行此操作:

http://blogs.msdn.com/b/wriju/archive/2011/05/14/code-first-ef-4-1-building-many-to-many-relationship.aspx

你需要在数据库中有第三个表,否则这个关系将存储在哪里?