我是一名新的ASP.NET Webforms开发人员。我现在正在学习如何将ObjectDataSource
与Entity Framework和Repository Pattern一起使用。我现在正在努力的是使用带有ObjectDataSource
控件的ListView
从表格中检索特定的项目列表。
在数据库的Config表中,我有10条记录。我想只检索7条记录。 那我该怎么做?如何将这个ID列表提供给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 :(得分: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;
}
添加另一种方法以从ID列表中获取配置列表