/// <summary> /// Tries to get JTokens ref, id, and type from <paramref name="node"/>. Sets NodeRefId, NodeId, and ServerTypeNameInfo in the returned JsonNodeInfo object /// </summary> public JsonNodeInfo VisitNode(JObject node, MappingContext mappingContext, NodeContext nodeContext) { var result = new JsonNodeInfo(); JToken refToken; if (node.TryGetValue("$ref", out refToken)) { result.NodeRefId = refToken.Value <String>(); return(result); } JToken idToken; if (node.TryGetValue("$id", out idToken)) { result.NodeId = idToken.Value <String>(); } JToken typeToken; if (node.TryGetValue("$type", out typeToken)) { var clrTypeName = typeToken.Value <String>(); result.ServerTypeNameInfo = TypeNameInfo.FromClrTypeName(clrTypeName); } return(result); }
private Tuple <EntityKey, EntityKey> ToEntityKeys(KeyMapping keyMapping, MetadataStore metadataStore) { var serverTypeInfo = TypeNameInfo.FromClrTypeName(keyMapping.EntityTypeName); var clientEntityTypeName = serverTypeInfo.ToClient(metadataStore).StructuralTypeName; var et = metadataStore.GetEntityType(clientEntityTypeName); var oldKey = new EntityKey(et, keyMapping.TempValue); var newKey = new EntityKey(et, keyMapping.RealValue); return(Tuple.Create(oldKey, newKey)); }
public StructuralType GetStructuralType(Type clrType) { var stName = TypeNameInfo.FromClrTypeName(clrType.FullName).Name; TypePair tp; if (_map.TryGetValue(stName, out tp)) { return(tp.StructuralType); } else { _map.Add(stName, new TypePair() { ClrType = clrType }); return(null); } }
public EntityError Resolve(EntityManager em) { IsServerError = true; try { EntityType entityType = null; if (EntityTypeName != null) { var stName = TypeNameInfo.FromClrTypeName(EntityTypeName).ToClient(em.MetadataStore).StructuralTypeName; entityType = em.MetadataStore.GetEntityType(stName); var ek = new EntityKey(entityType, KeyValues); Entity = em.GetEntityByKey(ek); } if (entityType != null) { if (PropertyName != null) { Property = entityType.Properties.FirstOrDefault(p => p.NameOnServer == PropertyName); if (Property != null) { PropertyName = Property.Name; } } var vc = new ValidationContext(this.Entity); vc.Property = Property; var veKey = (ErrorName ?? ErrorMessage) + (PropertyName ?? ""); var ve = new ValidationError(null, vc, ErrorMessage, veKey); ve.IsServerError = true; this.Entity.EntityAspect.ValidationErrors.Add(ve); } } catch (Exception e) { ErrorMessage = (ErrorMessage ?? "") + ": Unable to Resolve this error: " + e.Message; } return(this); }