2016-02-22 2 views
1

Я новый разработчик веб-форм ASP.NET. Теперь я изучаю, как использовать ObjectDataSource с шаблоном Entity Framework и шаблоном репозитория. Сейчас я пытаюсь получить конкретный список элементов из таблицы с помощью ObjectDataSource с помощью элемента управления ListView.Как получить список конкретных записей с использованием ASP.NET ObjectDataSource с шаблоном репозитория?

В таблице Config в базе данных у меня есть 10 записей. Я хотел бы получить только 7 записей. Так как я могу это сделать? Как я могу присвоить этот список идентификаторов ObjectDataSource, чтобы получить эти 7 записей не для всех записей?

ASP.NET Код:

<asp:ListView ID="lvConfigs" runat="server" 
        DataSourceID="odsConfig" DataKeyNames="Id"> 
        <ItemTemplate> 
         <div class="col-xs-12 col-sm-6 col-md-3"> 
          <div class="thumbnail wow fadeInUp" data-wow-delay=".1s"> 
           <img src="../Assets/images/team/member1.png" alt=""> 
           <div class="caption"> 
            <h4> 
             <%#Eval("Value") %> 
            </h4> 
            <p> 
             <%#Eval("Entry") %> 
            </p> 
           </div> 
          </div> 
         </div> 
        </ItemTemplate> 
        <EmptyDataTemplate> 
         <span>No data was returned.</span> 
        </EmptyDataTemplate> 
       </asp:ListView> 
       <asp:ObjectDataSource ID="odsConfig" runat="server" 
        TypeName="Test.BLL.ConfigBL" 
        DataObjectTypeName="Test.Models.T_Config" 
        SelectMethod="GetConfigs"></asp:ObjectDataSource> 

Вот код SysConfigRepository класса:

public class SysConfigRepository : IDisposable, ISysConfigRepository 
    { 
     //internal variable 
     private readonly TestEntities dbContext = new DbdKurdoaEntities(); 

     public IEnumerable<T_SysConfig> GetSysConfigs() 
     { 
      return dbContext.T_SysConfig.ToList(); 
     } 

     public T_SysConfig GetSysConfig(int id) 
     { 
      T_SysConfig sysConfigObj = GetSysConfigs().SingleOrDefault(s => s.Id == id); 
      return sysConfigObj; 
     } 

     private bool disposedValue = false; 

     protected virtual void Dispose(bool disposing) 
     { 
      if (!this.disposedValue) 
      { 
       if (disposing) 
       { 
        dbContext.Dispose(); 
       } 
      } 
      this.disposedValue = true; 
     } 

     public void Dispose() 
     { 
      Dispose(true); 
      GC.SuppressFinalize(this); 
     } 
    } 

Кодекс ISysConfigRepository:

public interface ISysConfigRepository : IDisposable 
    { 
     IEnumerable<T_SysConfig> GetSysConfigs(); 
     T_SysConfig GetSysConfig(int sysConfigId); 
    } 

ответ

0

Я думаю, что это нужно сделать:

public List<T_SysConfig> GetSysConfigs(List<int> ids) 
    { 
     List<T_SysConfig> sysConfigObjs = GetSysConfigs().ToList(); 
     List<T_SysConfig> result =(from c1 in sysConfigObjs 
            join c2 in ids on c1.Id equals c2 
            select c1).ToList(); 
     return result; 
    } 

Добавить еще один способ получить список конфигов из списка идентификаторов

+0

благодарит за вашу помощь. Вы имеете в виду, что я должен добавить этот метод к моему классу репозитория, правильно? –

+0

Да, и для шаблона, за которым вы следуете, я думаю, вы должны добавить это и в свой интерфейс. – SamGhatak

+0

, пожалуйста, отметьте ответ, если это поможет - так что это поможет и будущим посетителям;). thx – SamGhatak

Смежные вопросы