сделать загрузку свойства byte[] ленивой

Я использую EF4 Code First и у меня есть свойство:

public byte[] Bytes {get;set;}

могу ли я заставить это свойство загружаться лениво (только когда это необходимо)?


person Omu    schedule 07.04.2011    source источник


Ответы (2)


Разделение таблиц работает в 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();
    }
}
person Ladislav Mrnka    schedule 07.04.2011

Это действительно старый общий запрос со времен EF 1, EF 4 и все еще в EF 4.1.

Ссылка связана с CTP5, и единственным возможным решением является разделение таблиц. В основном вам нужно определить два класса сущностей, но сопоставить их с одной единственной таблицей в базе данных. Затем задача загрузки byte[] сводится к загрузке обычного навигационного свойства.

В ответе в сообщении говорится об ошибке в CTP5, из-за которой разделение таблиц не работало правильно, но, надеюсь, теперь она исправлена ​​в EF 4.1 RC (но я не знаю, действительно ли она исправлена).

person Slauma    schedule 07.04.2011