我是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()方法中,但是我对如何完成它感到很遗憾。
谢谢。
答案 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