【问题标题】:Generic Entity/Collection Fetching with LLBLGen DataAccessAdapter?使用 LLBLGen DataAccessAdapter 获取通用实体/集合?
【发布时间】:2016-12-30 22:59:55
【问题描述】:

我有一个表单,它需要从我正在使用 LLBLGen DataAccessAdapter 访问的数据库中填充下拉菜单(文本和值)。
我正在使用 Telerik,如果这提供了任何其他有用的信息或选项。

有没有一种方法可以通用地做到这一点,这样我就可以简单地调用类似的东西:

DropDown.DataSource = GetEntityCollection<OrderEntity>();

DropDown.DataSource = GetEntityCollection(OrderEntity);

我最初试图这样做,如下所示,但我遇到的这个想法的任何版本似乎都无法解释我的整个场景。由于我需要将类型作为泛型或参数传入,因此我不能将其用作 EntityCollection&lt;&gt; 需要的类型(即 EntityBase2)。

public static object GetEntityCollection<T>()  //Or
{
    using (DataAccessAdapter adapter = new DataAccessAdapter(CONNECTION))
    {
        EntityCollection<typeof(T)> collection = new EntityCollection<typeof(T)>();
        try
        {
            adapter.FetchEntityCollection(collection, null);
        }
        catch
        {

        }

        return collection;
    }
}

如果这不能直接实现,是否有更好的方法将其拆分以避免对我需要获取的每个数据库实体进行大量重写?

【问题讨论】:

    标签: c# generics llblgenpro llblgen


    【解决方案1】:
    public static IEntityCollection2 GetEntityCollection<T>() where T : EntityBase2
    {
        using (DataAccessAdapter adapter = new DataAccessAdapter())
        {
            IEntityCollection2 collection = new EntityCollection<T> ();
            try
            {
                adapter.FetchEntityCollection(collection, null);
            }
            catch
            {
                //Log Exception
            }
    
            return collection;
        }
    }
    

    【讨论】:

    • 这看起来是一个很好的解决方案,但是 IME 我从来没有遇到过这样的情况,即我只会从每个查找表中运行一个 select *,而至少没有某种类型的特定于表的过滤或排序。出于这个原因,我认为拥有这样一个通用方法比拥有一个特定于每个下拉菜单的方法更有帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-06-21
    • 2014-08-11
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多