0
按慣例使用以下類EF將正確創建表和PK/FK關聯。但是,當我將數據添加到照片集合並保存實體時,照片表格中的數據不會保存到數據庫表格中。EF關聯數據未持久保存到數據庫
我避免使用從ICollection繼承公共屬性的任何集合類型,而是使用私人支持字段,因爲我想控制對添加/刪除方法的訪問。有什麼額外的我需要添加到OnModelCreating告訴EF IEnumerable Photos中有數據並堅持它?
(數據來自專輯類可以正確保存)
public class Album
{
private readonly ICollection<Photo> _photos = new List<Photo>();
public Guid Id {get; set;}
public string Name {get; set;}
public virtual IEnumerable<Photo> Photos
{
get{ return _photos;}
}
public void AddPhoto(byte[] bytes, string name)
{
//some biz rules
Photo p = new Photo();
p.Bytes = bytes;
p.Name = name;
_photos.Add(p);
}
}
public class Photo
{
public Guid Id {get; set;}
public string Name {get; set;}
public byte[] Bytes {get; set;}
}
public class AlbumDbContext : DbContext
{
public AlbumDbContext()
{
this.Database.CreateIfNotExists();
}
public DbSet<Album> Albums { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
}
是的,實際的代碼有Id屬性。只是更新了代碼的完整性。 – Fixer 2011-06-13 15:38:46
你能解釋一些關於將enumerable轉換回集合的更多信息嗎?那可能怎麼樣?添加照片的唯一方法是通過AddPhoto方法。應該沒有辦法讓客戶改變收藏......? – Fixer 2011-06-13 15:48:39
你可以簡單地調用'(列表)專輯。照片' –
2011-06-13 15:50:05