SORU
21 Mart 2011, PAZARTESİ


Diğer Kuruluşlar da Dahil olmak üzere EF (Genel Depo desen)

Varlık Çerçevesi Kod üstünde Genel Havuz desen İlk kullanıyorum. Her şey bir sorgu daha fazla varlıkları dahil etmek için ihtiyacım kadar gayet iyi çalışıyordu. Bir işletmenin başarılı bir şekilde dahil etmek için aldım, ama şimdi birden çok varlıkları dahil etmek için nasıl çözemiyorum. Şimdiye kadar ne buldum: Check out

public IQueryable<TEntity> GetQuery<TEntity>() where TEntity : class
{
    var entityName = GetEntityName<TEntity>();
    return _objectContext.CreateQuery<TEntity>(entityName);
}

public IList<TEntity> GetQueryWithInclude<TEntity>(string toInclude) where TEntity : class
{
    var entityName = GetEntityName<TEntity>();
    return _objectContext.CreateQuery<TEntity>(entityName).Include(toInclude).ToList();
}

private string GetEntityName<TEntity>() where TEntity : class
{
    return string.Format("{0}.{1}", _objectContext.DefaultContainerName, _pluralizer.Pluralize(typeof(TEntity).Name));
}

Ne yapmaya çalıştım ama bir işlev dize dizisi başarılı oldu işe yaramadı, daha sonra "sorgu üstüne içerir. eklemek için deneyin Ben de onu merak ediyordum ne varsa aradığım GetQueryWithİnclude ve geçirilen bir varlık ismi (aslında bir navigasyon özelliği, bir seferde toplam sonuç sorgu, ama endişelendim bu olabilir yinelenen sonuçları sorgu her Ara... sence Ne olur en iyi şekilde bu işe?

Şimdiden teşekkürler!

GÜNCELLEME:

Burada elde etmek için çalışıyorum ne bir örnek:

public IQueryable GetQueryWithIncludes(string[] otherEntities)
{
    var entityName = GetEntityName<TEntity>();
    //now loop over the otherEntities array 
    //and append Include extensions to the query
    //so inside the loop, something like: 
    _objectContext.GetQuery<TEntity>(entityName).Include(otherEntities[index]);
}

CEVAP
21 Mart 2011, PAZARTESİ


IQueryable sadece Vardır uzantısını kullanır. EF 4.1 montaj mevcuttur. Eğer o mecliste başvuru istemezsin. eğer üst katman veri erişim derleme sarıcı uzatma yöntemi oluşturun.

Burada örnek var:

public static IQueryable<T> IncludeMultiple<T>(this IQueryable<T> query, params Expression<Func<T, object>>[] includes)
    where T : class
{
    if (includes != null)
    {
        query = includes.Aggregate(query, 
                  (current, include) => current.Include(include));
    }

    return query;
}

Örneğin bunun gibi kullanır:

var query = context.Customers
                   .IncludeMultiple(
                       c => c.Address,
                       c => c.Orders.Select(o => o.OrderItems));

Bu sorgu, onlar adresleri ile tüm müşterilerine yükler ve emirleri ve her sipariş sipariş öğeleri içerir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • iZAPPA

    iZAPPA

    16 Temmuz 2010
  • The Onion

    The Onion

    14 Mart 2006
  • tsweeney79

    tsweeney79

    21 Ocak 2008