Ejemplo n.º 1
0
        /// <summary>
        /// 定义事实表维度
        /// </summary>
        /// <param name="ordinal">维度序号</param>
        /// <param name="dimTreeID">维度树标识</param>
        /// <param name="dimName">维度名称(可为空,为空则用树的名字)</param>
        /// <returns></returns>
        public IRAPError DefineDimMatrix(int ordinal, short dimTreeID, string dimName = "")
        {
            //  var t4RowSet = _t4treeBase.GetRSAttr<RowSet_T4R3>().Cast<RowSet_T4R3>();
            var t4RowSet = _db.Set <RowSet_T4R3>().Where(c => c.PartitioningKey == 4 && c.EntityID == _opID);
            var obj      = t4RowSet.FirstOrDefault(c => c.Ordinal == ordinal);

            //检查dimTreeID参数是否存在
            if (dimName == "")
            {
                IRAPTreeModelSet modelTree = new IRAPTreeModelSet(_db);
                var treeEntity             = modelTree.GetAllTrees().FirstOrDefault(c => c.TreeID == dimTreeID);
                if (treeEntity == null)
                {
                    throw new Exception("输入参数dimTreeID不存在!");
                }
                dimName = treeEntity.TreeName;
            }
            int nameID = IRAPNamespaceSetFactory.CreatInstance(Enums.NamespaceType.Sys).GetNameID(0, dimName, 30);

            if (obj == null) //新增
            {
                RowSet_T4R3 row = new RowSet_T4R3()
                {
                    EntityID        = _t4treeBase.Leaf.EntityID,
                    Ordinal         = ordinal,
                    DimNameID       = nameID,
                    PartitioningKey = 4,
                    SrcFieldName    = "",
                    TreeID          = dimTreeID,
                    VersionLE       = 2147483647
                };
                _db.Set <RowSet_T4R3>().Add(row);
            }
            else //修改
            {
                obj.DimNameID = nameID;
                obj.TreeID    = dimTreeID;
            }
            _db.SaveChanges();
            return(new IRAPError(0, $"业务:{OperEntity.NodeName}[{_opID}] 第 {ordinal} 维度定义成功!"));
        }