[英]Relationship between Identity tables and Other tables in ASP.NET MVC 5
[英]Relationship between tables not showing in asp.net mvc5
我正在構建一個asp.net應用程序。 我有兩個班,分別是電影班和導演班,在那里我實現了多對多關系。
導演班
public class Director
{
private ICollection<Film> _films;
public Director()
{
_films = new List<Film>();
}
public int DirectorID { get; set; }
public string fName { get; set; }
public string lName { get; set; }
public int Age { get; set; }
public virtual ICollection<Film> Films
{
get { return _films; }
set { _films = value; }
}
}
電影課
public class Film
{
private ICollection<Director> _directors;
public Film()
{
_directors = new List<Director>();
}
public int FilmId { get; set; }
public string Name { get; set; }
public int Minutes { get; set; }
public string AgeClassification { get; set; }
public virtual ICollection<Director> Directors
{
get { return _directors; }
set { _directors = value; }
}
}
種子法
protected override void Seed(FilmNetwork.Models.FilmNetworkContext context)
{
var films = new List<Film>
{
new Film() { FilmId = 1, Name = "The Dark Knight", Minutes = 152, AgeClassification = "15A" },
new Film() { FilmId = 2, Name = "The Social Network", Minutes = 120, AgeClassification = "15A" },
new Film() { FilmId = 3, Name = "Up In The Air", Minutes = 109, AgeClassification = "15A" },
new Film() { FilmId = 4, Name = "Slumdog Millionaire", Minutes = 120, AgeClassification = "15A" },
new Film() { FilmId = 5, Name = "The Wolf Of Wall Street", Minutes = 180, AgeClassification = "18" },
new Film() { FilmId = 6, Name = "King Kong", Minutes = 221, AgeClassification = "12" },
new Film() { FilmId = 7, Name = "Schindler's List", Minutes = 195, AgeClassification = "18" }
};
films.ForEach(f => context.Films.AddOrUpdate(film => film.Name, f));
context.SaveChanges();
var directors = new List<Director>
{
new Director() { DirectorID = 1, fName = "Christopher", lName = "Nolan", Age = 46,
Films = films.Where(f => (f.Name == "The Dark Knight")).ToList()},
new Director() { DirectorID = 2, fName = "David", lName = "Fincher", Age = 54,
Films = films.Where(f => (f.Name == "The Social Network")).ToList() },
new Director() { DirectorID = 3, fName = "Jason", lName = "Reitman", Age = 39,
Films = films.Where(f => (f.Name == "Up In The Air")).ToList() },
new Director() { DirectorID = 4, fName = "Danny", lName = "Boyle", Age = 60,
Films = films.Where(f => (f.Name == "Slumdog Millionaire")).ToList() },
new Director() { DirectorID = 5, fName = "Martin", lName = "Scorsese", Age = 74,
Films = films.Where(f => (f.Name == "The Wolf Of Wall Street")).ToList() },
new Director() { DirectorID = 6, fName = "Peter", lName = "Jackson", Age = 55,
Films = films.Where(f => (f.Name == "King Kong")).ToList() },
new Director() { DirectorID = 7, fName = "Steven", lName = "Spielberg", Age = 70,
Films = films.Where(f => (f.Name == "Schindler's List")).ToList() },
};
directors.ForEach(d => context.Directors.AddOrUpdate(director => director.lName, d));
context.SaveChanges();
我有一個ajax搜索,它根據ID來制作電影。 它將返回影片,並且具有“導演”字段的導演為空白,因為某種原因該關系尚未實現。
您應在此處添加導演:
new Film() { FilmId = 1, Name = "The Dark Knight", Minutes = 152, AgeClassification = "15A" }
您還絕對需要多對多關系嗎? 在電影中,導演人數多於一位的情況並不多,因此將一對多的關系添加進來會更簡單。
如何實現一對多關系:
導演班
public class Director
{
public int DirectorID { get; set; }
public string fName { get; set; }
public string lName { get; set; }
public int Age { get; set; }
public virtual ICollection<Film> Films{get;set;}
}
電影課
public class Film
{
public int FilmId { get; set; }
public string Name { get; set; }
public int Minutes { get; set; }
public string AgeClassification { get; set; }
public virtual Director Director { get; set; }
}
然后像這樣添加它:
new Film() { FilmId = 1, Name = "The Dark Knight", Minutes = 152, AgeClassification = "15A" Director = _context.directors.where(x=> x.ID == "1"// or whichever parameter you want to find director from list) }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.