Я использую EF4 Code First и у меня есть свойство:
public byte[] Bytes {get;set;}
могу ли я заставить это свойство загружаться лениво (только когда это необходимо)?
Я использую EF4 Code First и у меня есть свойство:
public byte[] Bytes {get;set;}
могу ли я заставить это свойство загружаться лениво (только когда это необходимо)?
Разделение таблиц работает в 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();
}
}
Это действительно старый общий запрос со времен EF 1, EF 4 и все еще в EF 4.1.
Ссылка связана с CTP5, и единственным возможным решением является разделение таблиц. В основном вам нужно определить два класса сущностей, но сопоставить их с одной единственной таблицей в базе данных. Затем задача загрузки byte[] сводится к загрузке обычного навигационного свойства.
В ответе в сообщении говорится об ошибке в CTP5, из-за которой разделение таблиц не работало правильно, но, надеюсь, теперь она исправлена в EF 4.1 RC (но я не знаю, действительно ли она исправлена).