2016-03-31 23 views
4

Ekran sırasını ayarlamak için kullanılan Sipariş gibi bazı özdeş özelliklere sahip birden çok Öğe Çerçeve sınıfım var. MVC Genel Deposu Filtreleme

bir örneği, EF kısmi sınıfı:

[Table("Feature")] 
public partial class Feature 
{ 
    public long ID { get; set; } 

    public long AppID { get; set; } 

    [Required] 
    [StringLength(15)] 
    public string DisplayMode { get; set; } 

    [Required] 
    public int Order { get; set; } 
} 

diğer işletme sınıfları da Appıd özelliği içerir.

Repository sınıfımda, AppID tarafından filtrelenen en yüksek Sipariş değerini elde etmek için genel bir yönteme sahip olmak mümkün mü?

public class Repository<TEntity> : IRepository<TEntity> where TEntity : class 
{ 
    public int NewOrderNumber(long appID) 
    { 
     int result = 0; 

     var count = Context.Set<TEntity>().Count(); 

     if (count != 0) 
     { 
      result = (from List in Context.Set<TEntity>() 
         where List.AppID == appID 
         orderby List.Order 
         select List.Order).ToList().LastOrDefault(); 

      result++; 
     } 

     return result; 
    } 
} 

Kodlandığı gibi, TEntity'nin AppID özelliği hakkında bir fikri yoktur.

cevap

5

Eğer sınıflar

public partial class Feature : IAppOrdered 
{ 
} 

arabirimini uygulamak Let bir arayüz

public interface IAppOrdered 
{ 
    long AppID { get; } 
    public int Order { get; } 
} 

Ekle Ve sonra depo sınıfına genel kısıtlaması ekleme

public class Repository<TEntity> : IRepository<TEntity> where TEntity : class, IAppOrdered 
{ 
} 

Artık AppId erişebilir ve Order sizin yerinizden özellikler.