我試圖從電影數據庫中建模實體。我有電影有一個列有導演和導演名單的電影。我所做的對象是這樣的:初始化相互依賴的對象
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。
順便說一句,你可以在Linq2Sql生成的類中執行額外的檢查,因爲它們是部分實現的,並且有部分方法可以用來獲取更改。 –
謝謝,這就是我最初做的。我想我會離開,因爲我最終複製了每一個屬性,命名開始成爲一個真正的痛苦。我可以回過頭來看看,但如果沒有其他的方法...... –