Я пытаюсь смоделировать сущности из кинобазы. У меня есть фильмы, в которых есть список режиссеров и режиссеров, у которых есть список фильмов. Объекты, которые я сделал, выглядят так:
public class eFilm
{
//Basic properties
public int ID { get; private set; }
public string Title { get; set; }
public DateTime? Date { get; set; }
public List<eDirector> Directors = new List<eDirector>();
public List<eActor> Actors = new List<eActor>();
public eMedia_Type Type;
/// <summary>
/// Initiate a new Films from Films_Data object
/// </summary>
/// <param name="Film">Films_Data object from which to initiate a new film</param>
public eFilm(Film Film)
{
this.ID = Film.ID;
this.Title = Film.Title;
this.Date = Film.Date;
this.Synopsis = Film.Synopsis;
//Add directors
Film.Films_Directors.Select(fd => fd.Director).ToList<Director>().ForEach(d => this.Directors.Add(new eDirector(d)));
//Add actors
Film.Films_Actors.Select(fa => fa.Actor).ToList<Actor>().ForEach(a => this.Actors.Add(new eActor(a)));
//Add type
this.Type = new eMedia_Type(Film.Media_Type);
}
}
public class eDirector
{
public int ID { get; private set; }
public string Name{ get; set;}
public List<eFilm> Films = new List<eFilm>();
public eDirector(Director Director)
{
this.ID = Director.ID;
this._Name = Director.Name;
_Number_Of_Films = Director.Films_Directors.Select(d => d.Film).ToList<Film>().ForEach(f => this.Films.Add(new eFilm(f)));
}
}
Я упустил некоторые вещи для краткости. Это дает мне переполнение стека, потому что я добавляю режиссеров к фильмам, которые затем добавляют фильмы к режиссерам, которые добавляют режиссеров к фильмам и т. Д.
Я не могу найти способ смоделировать это, но, очевидно, должен быть какой-то способ сделать это, так как структура сущностей может ...
Любой совет о том, как поступить, будет очень признателен.
РЕДАКТИРОВАТЬ: Некоторая информация, которая может потребоваться. Я делаю это, чтобы добавить слой поверх классов, сгенерированных Linq-to-SQL, чтобы я мог выполнить некоторые проверки данных, прежде чем передать их в хранилище для сохранения. Я использую c # и ASP.NET MVC.