首页 > 解决方案 > 获取在 C# 事务中在对象内部创建的对象的 ID

问题描述

我正在尝试使用 Oracle 数据库在 c# 中插入记录。我正在使用事务进行插入。

如何让子对象 ID 插入即将到来的下一个对象的数据?我能够获取父对象的 ID,但无法获取子对象 ID。父母和孩子是同一类的对象。

代码如下所示:

    using (DatabaseContext lContext = new DemoDatabaseContext())
    {
        try
        {                    
            foreach (var alias in pLstAlias)
            {


                DATA lAlias = new DATA();
                lAlias.ID = alias.ID;
                lAlias.FIRST_NAME = alias.FIRST_NAME;
                lAlias.SECOND_NAME = alias.SECOND_NAME;                        
                lAlias.NAME_CONCAT = alias.GetConcatName();
                lAlias.SYSTEM_NAME = alias.GetSystemName(lAlias.NAME_CONCAT);  
                lAlias.Add(lContext);

                if (alias.AKAList != null)
                {
                    foreach (var aka in alias.AKAList)
                    {
                        DATA lChildAlias = DATA();
                        lChildAlias.PARENT_ID = lAlias.ID;
                        lChildAlias.AKA__NAME = aka.FIRST_NAME;                                
                        lChildAlias.NAME_CONCAT = aka.GetConcatName();
                        lChildAlias.SYSTEM_NAME = aka.GetSystemName(lChildAlias.NAME_CONCAT);                                
                            List<DATA2> aliasList = StoreRecodsToObject(lChildAlias.SYSTEM_NAME);

                            if (aliasList != null)
                            {
                                foreach (var item in aliasList)
                                {
                                    DATA DataForAliases = new DATA2();
// here I need to add ID of lChildAlias
                                        DataForAliases.ALIAS_ID = lChildAlias.ID; 
                                        DataForAliases.NAME = item.NAME;                                           
                                        DataForAliases.Add(lContext);
                                }

                            }
                        }



                        lChildAlias.Add(lContext);
                    }
                }



            }
        }
        catch(Exception ex){
            lContext.Rollback();
            return false;
        }
    }

标签: c#oracleplsqltransactions

解决方案


推荐阅读