/// <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)); } }
/// <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); }
private static void EnsureIsNavigationMember(EntityMemberType memberType) { if (memberType != EntityMemberType.EntityRef && memberType != EntityMemberType.EntitySet) { throw new InvalidOperationException("Only EntityRef and EntitySet can include other"); } }
/// <summary> /// 新建子级 /// </summary> private Includer(Includer parent, EntityMemberType memberType, ushort memberId) { EnsureIsNavigationMember(memberType); Parent = parent ?? throw new ArgumentNullException(nameof(parent)); MemberType = memberType; MemberId1 = memberId; }
/// <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)); }
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; } }