コード例 #1
0
        /// <summary>
        /// Constructor.
        /// </summary>
        internal EntityMemberName(EntityMember member)
        {
            if (member == null)
            {
                throw new ArgumentNullException("member");
            }

            // set...
            if (member.EntityType == null)
            {
                throw new InvalidOperationException("member.EntityType is null.");
            }
            _entityTypeName = member.EntityType.EntityTypeName;
            _name           = member.Name;

            // check...
            if (member is EntityField)
            {
                _memberType = EntityMemberType.Field;
            }
            else
            {
                throw new NotSupportedException(string.Format("Cannot handle '{0}'.", member));
            }
        }
コード例 #2
0
ファイル: Includer.cs プロジェクト: enjoycode/appbox.clr
        /// <summary>
        /// 包含导航属性(EntityRef or EntitySet)
        /// </summary>
        public Includer Include(EntityMemberType memberType, ushort memberId)
        {
            EnsureIsNavigationMember(MemberType);

            if (Childs == null)
            {
                var res1 = new Includer(this, memberType, memberId);
                Childs = new List <Includer> {
                    res1
                };
                return(res1);
            }

            var found = Childs.FindIndex(t => t.MemberId1 == memberId);

            if (found >= 0)
            {
                return(Childs[found]);
            }

            var res = new Includer(this, memberType, memberId);

            Childs.Add(res);
            return(res);
        }
コード例 #3
0
ファイル: Includer.cs プロジェクト: enjoycode/appbox.clr
 private static void EnsureIsNavigationMember(EntityMemberType memberType)
 {
     if (memberType != EntityMemberType.EntityRef && memberType != EntityMemberType.EntitySet)
     {
         throw new InvalidOperationException("Only EntityRef and EntitySet can include other");
     }
 }
コード例 #4
0
ファイル: Includer.cs プロジェクト: enjoycode/appbox.clr
        /// <summary>
        /// 新建子级
        /// </summary>
        private Includer(Includer parent, EntityMemberType memberType, ushort memberId)
        {
            EnsureIsNavigationMember(memberType);

            Parent     = parent ?? throw new ArgumentNullException(nameof(parent));
            MemberType = memberType;
            MemberId1  = memberId;
        }
コード例 #5
0
ファイル: KVScan.cs プロジェクト: enjoycode/appbox.clr
 /// <summary>
 /// 用于Include EntityRef or EntitySet
 /// </summary>
 public Includer Include(EntityMemberType memberType, ushort memberId)
 {
     if (rootIncluder == null)
     {
         rootIncluder = new Includer(modelId);
     }
     return(rootIncluder.Include(memberType, memberId));
 }
コード例 #6
0
ファイル: EntityMember.cs プロジェクト: wangyougui/appbox.clr
        internal void Read(BinSerializer bs)
        {
            Id         = bs.ReadUInt16();
            MemberType = (EntityMemberType)bs.ReadByte();
            ValueType  = (EntityFieldType)bs.ReadByte();
            Flag.Data  = bs.ReadByte();

            switch (MemberType)
            {
            case EntityMemberType.DataField:
                switch (ValueType)
                {
                case EntityFieldType.Boolean: BooleanValue = bs.ReadBoolean(); break;

                case EntityFieldType.Byte: ByteValue = bs.ReadByte(); break;

                case EntityFieldType.Float: FloatValue = bs.ReadFloat(); break;

                case EntityFieldType.Double: DoubleValue = bs.ReadDouble(); break;

                case EntityFieldType.Enum: Int32Value = bs.ReadInt32(); break;

                case EntityFieldType.Int16: Int16Value = bs.ReadInt16(); break;

                case EntityFieldType.UInt16: UInt16Value = bs.ReadUInt16(); break;

                case EntityFieldType.Int32: Int32Value = bs.ReadInt32(); break;

                case EntityFieldType.UInt32: UInt32Value = bs.ReadUInt32(); break;

                case EntityFieldType.Int64: Int64Value = bs.ReadInt64(); break;

                case EntityFieldType.UInt64: UInt64Value = bs.ReadUInt64(); break;

                case EntityFieldType.DateTime: DateTimeValue = bs.ReadDateTime(); break;

                case EntityFieldType.Guid: GuidValue = bs.ReadGuid(); break;

                case EntityFieldType.Decimal: DecimalValue = bs.ReadDecimal(); break;

                case EntityFieldType.String: ObjectValue = bs.ReadString(); break;

                case EntityFieldType.Binary: ObjectValue = bs.ReadByteArray(); break;

                default: throw new NotSupportedException();
                }
                break;

            case EntityMemberType.EntityRef:
            case EntityMemberType.EntitySet: ObjectValue = bs.Deserialize(); break;

            //case EntityMemberType.ImageRef: this.ObjectValue = bs.Deserialize(); break;
            //case EntityMemberType.FieldSet:
            //switch (this.ValueType)
            //{
            //    case EntityFieldType.String:
            //        {
            //            var array = bs.ReadStringArray();
            //            this.ObjectValue = array == null ? null : new HashSet<string>(array);
            //        }
            //        break;
            //    case EntityFieldType.Integer:
            //        {
            //            var array = bs.ReadInt32Array();
            //            this.ObjectValue = array == null ? null : new HashSet<int>(array);
            //        }
            //        break;
            //    case EntityFieldType.Guid:
            //        {
            //            var array = bs.ReadGuidArray();
            //            this.ObjectValue = array == null ? null : new HashSet<Guid>(array);
            //        }
            //        break;
            //    case EntityFieldType.Float:
            //        {
            //            var array = bs.ReadFloatArray();
            //            this.ObjectValue = array == null ? null : new HashSet<float>(array);
            //        }
            //        break;
            //    case EntityFieldType.Double:
            //        {
            //            var array = bs.ReadDoubleArray();
            //            this.ObjectValue = array == null ? null : new HashSet<double>(array);
            //        }
            //        break;
            //    case EntityFieldType.Decimal:
            //        {
            //            var array = bs.ReadDecimalArray();
            //            this.ObjectValue = array == null ? null : new HashSet<Decimal>(array);
            //        }
            //        break;
            //    case EntityFieldType.DateTime:
            //        {
            //            var array = bs.ReadDateTimeArray();
            //            this.ObjectValue = array == null ? null : new HashSet<DateTime>(array);
            //        }
            //        break;
            //    case EntityFieldType.Byte:
            //        {
            //            var array = bs.ReadByteArray();
            //            this.ObjectValue = array == null ? null : new HashSet<byte>(array);
            //        }
            //        break;
            //    default: throw new NotSupportedException($"不支持二进制反序列化FieldSet: {ValueType}");
            //}
            //break;
            default:
                GuidValue   = bs.ReadGuid();
                ObjectValue = bs.Deserialize();
                break;
            }
        }