Example #1
0
        /// <summary>
        ///     插入记录
        /// </summary>
        /// <param name="info">实体类</param>
        /// <param name="db">可传入事务的db</param>
        /// <param name="identity">标识</param>
        public bool Insert(TInfo info, out int identity, DbExecutor db = null)
        {
            bool result;
            var  indexHaveValue = Map.GetModelInfo().Key != null
                                      ? Map.GetModelInfo().Key.GetValue(info, null) != null
                                      : false;

            var lst = ToList(db);

            // 如果标识没有值,则必须取值。
            if (indexHaveValue)
            {
                result   = Data.Insert(info, db);
                identity = Map.GetModelInfo().Key.GetValue(info, null).ConvertType(0);
            }
            else
            {
                result = Data.Insert(info, out identity, db);

                #region 赋值给主键

                if (!Map.IndexName.IsNullOrEmpty())
                {
                    var kic = Map.GetModelInfo(Map.IndexName);
                    if (kic.Key.CanWrite)
                    {
                        kic.Key.SetValue(info, identity, null);
                    }
                }

                #endregion
            }

            if (result)
            {
                lst.Add(info);
            }
            return(result);
        }