[英]Eager Loading Include use issue
我對MVC和Entity Framework還是很陌生,並且正在嘗試遵循asp.net教程並遇到重大障礙。 我有一個表,可以正確顯示,但是在表中顯示外鍵,而不是參考表中的數據。 我想我想在這里利用熱切的加載,但是我不確定將include放在哪里。 我相信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()方法中,但是我不知道該怎么做。
謝謝。
當您具有多對多關系時,實體框架會自動創建表接口,但是對於具有外鍵的關系,您必須建模“ 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();
看: 一對多
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.