2

我使用EF4代碼優先,我有一個屬性:化妝的byte []屬性負載懶

public byte[] Bytes {get;set;} 

我可以讓這個屬性負荷懶洋洋地(真實需要,只有當它)?

回答

1

自EF 1,EF 4和still in EF 4.1以來,這確實是一個老的共同要求。

該鏈接與CTP5相關,唯一可能的解決方案是Table Splitting。您基本上需要定義兩個實體類,但將它們映射到數據庫中的一個表。加載字節[]的任務然後減少到加載正常的導航屬性。

該帖子中的答案是關於CTP5中的一個錯誤,它使表格拆分不能正常工作,但現在有望在EF 4.1 RC中修復(但我不知道它是否真的修復了)。

4

表劈裂工作在EF 4.1 RC:

public class Item 
{ 
    public int Id { get; set; } 
    ... 
    public virtual ItemDetail ItemDetail { get; set; } 
} 

public class ItemDetail 
{ 
    public int Id { get; set; } 
    public byte[] Bytes { get; set; } 
} 

public class Context : DbContext 
{ 
    public DbSet<Item> Items { get; set; } 
    public DbSet<ItemDetail> ItemDetails { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<Item>().ToTable("Items"); 
     modelBuilder.Entity<ItemDetail>().ToTable("Items"); 
     modelBuilder.Entity<Item>() 
      .HasRequired(i => i.ItemDetail) 
      .WithRequiredPrincipal(); 
    } 
}