如何使用 ASP.NET 具有存储库模式的对象数据源获取特定记录的列表

本文关键字:数据源 对象 获取 列表 记录 模式 NET ASP 何使用 存储 | 更新日期: 2023-09-27 18:35:36

我是一个新的 ASP.NET Webforms开发人员。我现在正在学习如何将ObjectDataSource与实体框架和存储库模式一起使用。我现在正在努力解决的是使用带有ListView控件的ObjectDataSource从表中检索特定的项目列表。

在数据库的配置表中,我有 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);
    }

如何使用 ASP.NET 具有存储库模式的对象数据源获取特定记录的列表

我认为这应该可以:

    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 列表中获取配置列表