实体框架代码首先是多对多关系的CREATE视图

时间:2016-03-29 19:09:22

标签: c# asp.net-mvc entity-framework-6 many-to-many

我是MVC和实体框架的新手。对于研究,我正在开发一个网站,其中有一个页面用于创建要在网站上销售的产品...... 一种产品可以有许多应用,一种应用可以与许多不同的产品一起使用。
例如:产品编号:1名称:椅子,应用:坐,燃烧
      产品编号:2名称:表格,应用:燃烧
      申请号:1名:坐席       应用程序ID:2名称:刻录

产品类

 public int Id { get; set; }
 public string Name { get; set; }
 public ICollection<Application> Applications { get; set; }

申请类

public int Id { get; set; }
public string Name { get; set; }
public ICollection<Product> Products { get; set; }

上下文文件:

public DbSet<Product> Products { get; set; }
public DbSet<Application > Applications { get; set; }

modelBuilder.Entity<Product>()
                .HasMany(c => c.Applications).WithMany(i => i.Products)
                .Map(t => t.MapLeftKey("ProductId")
                    .MapRightKey("ApplicationId")
                    .ToTable("ProductApplication"));

我的问题:

1)我的实体是否适合我想做的事情?我的意思是,EF会创建一个桥接表来链接这两个表(产品和应用程序)?

2)如何让“创建”视图显示数据库中可用的所有应用程序,供用户选择他们希望创建的产品的应用程序数量?

修改

所以,我的EF创建了我想要的桥接表ProductApplication,到目前为止一直很好。

在我的创建视图中,我列出了DB中可用的所有应用程序,如下所示:

<div class="form-group">
        @Html.LabelFor(model => model.Applications, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @foreach (Application app in ViewBag.Aplications)
            {
                <input type="checkbox" id="@app.Id" name="Applications"/>@app.Nome
            }
        </div>
    </div>

显示它们没问题,但是当我提交时,发送到操作的Product对象的Applications属性等于0.

我需要此产品才能拥有在视图中选择的应用程序,我做错了什么?

0 个答案:

没有答案