渴望加载包括使用问题

时间:2017-01-07 03:39:17

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

我是MVC和实体框架的新手,我正在尝试遵循asp.net教程,并遇到了一个重大障碍。我有一个正确显示的表,但显示表中的外键而不是参考表中的数据。我想我想在这里利用热切的装载,但我不知道在哪里放置我的包含。我相信asp.net上的教程适用于较旧版本的MVC。我知道我的include应该包含在下面的代码段中。我想包括艺术家类型。

首先,我的模型类的一部分:

        modelBuilder.Entity<tblArtist>()
            .HasMany(e => e.tblArtisttblArtistType)
            .WithRequired(e => e.tblArtist)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<tblArtist>()
            .HasMany(e => e.tblIssueArtist)
            .WithRequired(e => e.tblArtist)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<tblArtist>()
            .HasMany(e => e.tblIssueAutograph)
            .WithRequired(e => e.tblArtist)
            .WillCascadeOnDelete(false);

        modelBuilder.Entity<tblArtistType>()
            .HasMany(e => e.tblArtisttblArtistType)
            .WithRequired(e => e.tblArtistType)
            .WillCascadeOnDelete(false);

我的控制器代码:

public class tblArtistsController : Controller
{
    private joerdieComicsModel1 db = new joerdieComicsModel1();

    // GET: tblArtists
    public ActionResult Index()
    {

        return View(db.tblArtist.ToList());
    }

    // GET: tblArtists/Details/5
    public ActionResult Details(int? id)
    {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        tblArtist tblArtist = db.tblArtist.Find(id);
        if (tblArtist == null)
        {
            return HttpNotFound();
        }
        return View(tblArtist);
    }

我知道包含代码应该放在公共的ActionResult Index()方法中,但是我对如何完成它感到很遗憾。

谢谢。

1 个答案:

答案 0 :(得分:0)

当你有多对多的关系实体框架时 自动创建表接口但是具有外键的关系 你的模特必须是“EX:ArtistId”。

例如:            的 Person.cs

  public class Person
  {
    public int Id { get; set; }

    public string Name { get; set; }

    public ICollection<Book> Books { get; set; }
  }

<强> Book.cs

    public class Book
{
    public int Id { get; set; }

    public string Name { get; set; }

    public Person Person { get; set; }

    public int PersonId { get; set; }
}

在模型构建器中:

 modelBuilder.Entity<Person>()
             HasMany(_ => _.Books)
            .WithRequired(_ => _.Person)
            .HasForeignKey(_ => _.PersonId)
            .WillCascadeOnDelete();

见:           One To Many