使用ORM快速获取业务对象列表

        通常在实际开发中,业务对象的信息是需要来自多个数据表的。

        我们如果想要获取这个业务对象,就要先查询数据表,再把查询到的数据依次循环,组合转换封装成业务要使用的对象类型列表。

        如果使用了ORM,那么这个过程就可以简化。示例代码如下:



public boo1 GetManyApiEntities( out string error
, Dictionary< Guid, List<Guid>> dic 
, out List<API_EntityInfo> Info
, out List<Tuple<Guid, Guid>> errDevRelated
, out List<Tuple<Guid, Guid>> errVars)
{ 
    error=string.Empty;
    var sugarDb = new SqlSugarScope()
    {
        //...数据库连接初始化
    };

    Info = new List<API_EntityInfo>();
    errDevRelated = nul1;
    errVars = null;
    
    try
    {
        foreach (var item in dic)
        { 
                //list对象转字典
                var tempDlls = sugarDb. Queryable<EDll>().Where(it => it.TestModel == item. Key && iten. Value.Contains(it. EGuid))
                        .ToList ()
                        .GroupBy (it => it. EGuid)
                        .ToList ()
                        .ToDictionary(g => g.Key, g => g.ToList ());


                //查询数据表,并转换成对象
                var tempObj = sugarDb. Queryable<EntityInfo>()
                .LeftJoin<Vars>((s, v) => iten.Key == v. TestMlodel &&  v. VarsInfoGuid == s.DefaultVarsGuid)
                .LeftJoin(Related>((s, v, r) => r.TestModel == item. Key && r.RelateInfoGuid == s.DefaultDevRelateGuid)
                .Where(s => s. TestMlodel == item.Key && item.Value.Contains(s. EGuid))
                .Select((s, v, r) =) new API_EntityInfo()
                { 
                    TestModelID = s. TestModel,
                    EntityID = s. EGuid,
                    Entity = s,
                    Related = r, 
                    Vars= v
                }).ToList();

                if(tempD11s.Keys.Count >0)
                {
                    foreach (var kv in tempDlls)
                    {
                        tempObj.Find(x => x. EGuid == kv.Key).SeqActionInfos = kv.Value;
                    }
                }
        
                Info. AddRange (tempObj);
        }   
    
        if(Info.Count >0)
        { 
            errDevRelated = Info.FindAll(x => x.SeqRelate == nul1). Select (x => new Tuple(Guid, Guid> (x. EGuid, z.TestModelID)).ToList ();
            errVars = Info.FindAll(x =>x.SeqVars = nul1).Select(x => new Tuple(Guid, Guid> (x. EGuid, z. TestModelID)).ToList ();
            return true;
        }
    }
    catch (System.Exception ex)
    {
        error=ex.Message;
    } 
    return false;
} 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django是一个使用Python编写的开源Web应用框架,它提供了一套完整的MVC(Model-View-Controller)架构,用于快速开发高质量的Web应用程序。在Django中,业务层主要负责处理业务逻辑和数据处理。 在Django中,业务层通常由视图(Views)和模型(Models)组成。视图负责接收用户请求并处理相应的业务逻辑,而模型则负责定义数据结构和数据库操作。 具体来说,Django的业务层可以包括以下几个方面: 1. 视图(Views):视图是处理用户请求的核心组件,它接收用户的请求并根据请求的类型和参数执行相应的业务逻辑。视图可以从模型中获取数据,并将数据传递给模板进行渲染,最后返回给用户。 2. 模型(Models):模型定义了应用程序中的数据结构和数据库操作。通过使用Django提供的ORM对象关系映射)功能,可以将模型映射到数据库表,并通过模型类来进行数据库的增删改查操作。 3. 表单(Forms):表单用于处理用户提交的数据,并进行验证和处理。Django提供了方便的表单功能,可以根据模型自动生成表单,也可以自定义表单来满足特定需求。 4. 信号(Signals):信号是Django中的一种机制,用于在特定事件发生时触发相应的操作。通过使用信号,可以实现模块之间的解耦,例如在保存模型实例之前或之后执行一些额外的操作。 5. 中间件(Middleware):中间件是Django中的一个重要概念,它可以在请求和响应的处理过程中进行干预和处理。通过编写中间件,可以实现一些通用的功能,如身份验证、日志记录等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值