预先加载包括使用问题



我对MVC和实体框架非常陌生,正在尝试遵循 asp.net 教程并遇到了重大障碍。我有一个正确显示的表,但显示表中的外键而不是引用表中的数据。我想我想在这里利用急切的加载,但我不确定在哪里放置我的包含。我相信 asp.net 教程适用于旧版本的 MVC。我知道我的包含应该放在以下代码片段中。我正在尝试包括艺术家类型。

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

        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() 方法中,但我不知道如何做到这一点。

谢谢。

当你有多对多关系实体框架时自动创建表接口,但对具有外键的关系您的模型必须"EX:艺术家ID"。

例如: 人.cs

  public class Person
  {
    public int Id { get; set; }
    public string Name { get; set; }
    public ICollection<Book> Books { get; set; }
  }

书.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();

并查看: 一对多

最新更新