Ejemplo n.º 1
0
        /// <summary>
        /// 添加成员
        /// </summary>
        /// <param name="member"></param>
        /// <param name="byImport">是否导入的成员,是则不再生成标识</param>
        internal void AddMember(EntityMemberModel member, bool byImport = false)
        {
            CheckDesignMode();
            CheckOwner(member.Owner);

            if (!byImport)
            {
                //TODO:通过设计时上下文获取ApplicationModel是否导入,从而确认当前Layer
                var layer = ModelLayer.DEV;
                var seq   = layer == ModelLayer.DEV ? ++_devMemberIdSeq : ++_usrMemberIdSeq;
                if (seq >= MaxMemberId)
                {
                    throw new Exception("MemberId out of range");
                }

                ushort memberId = (ushort)(seq << IdUtil.MEMBERID_SEQ_OFFSET | (ushort)layer << IdUtil.MEMBERID_LAYER_OFFSET);
                member.InitMemberId(memberId);
            }
            Members.Add(member);

            if (!member.AllowNull) //注意仅none nullable
            {
                ChangeSchemaVersion();
            }
            OnPropertyChanged();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Only used for StoreInitiator
        /// </summary>
        internal void AddSysMember(EntityMemberModel member, ushort id)
        {
            CheckDesignMode();
            CheckOwner(member.Owner);

            member.InitMemberId(id); //注意:传入id已处理Layer标记位
            Members.Add(member);
        }