我現在在一個簡單的測試應用程序中首先使用EF5代碼來測試各種功能。我已經定義了代表一對多鏈接的兩個實體之間的「識別關係」。在這裏我定義了一個PhotoCollection,它有許多子照片實體;如何定義嵌套的識別關係實體框架代碼第一個
public class PhotoCollection
{
public int Id { get; set; }
public virtual ISet<Photo> Photos { get; private set; }
public PhotoCollection()
{
Photos = new HashSet<Photo>();
}
}
public class Photo
{
[Key, ForeignKey("Parent"), Column(Order = 1)]
public int PhotoCollectionId { get; set; }
[Key, Column(Order = 2)]
public int PhotoId { get; set; }
public virtual PhotoCollection Parent { get; set; }
[Required, MaxLength(200)]
public string FilePath { get; set; }
public Photo()
{
}
}
和我的OnModelCreating的實現包括;
modelBuilder.Entity<Photo>().Property(p => p.PhotoId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
其結果是,當我刪除一個集光,所有的照片實體被刪除,以及其由「識別關係」提供。大。
我的問題是如何在此對象圖中定義更高層次,假設我想將PhotoProperties作爲Photo的一對多集合。在這種情況下,我想刪除PhotoCollection,並且所有相應的Photo和PhotoProperty記錄也將被刪除。使用上面的方法,是否有必要將一個GrandParent屬性添加到指向PhotoCollection的PhotoProperty中?
我可以在模型構建器中使用流暢的Api實現相同的結果嗎?
我在網上找到的唯一例子是針對單級父級>子級別。
在此先感謝。
非常感謝它完美的作品。 –
這很有幫助。你知道這個有什麼好的文檔嗎?我正在嘗試爲Azure移動服務和Azure SQL做類似的事情。 – WiteCastle