示例#1
0
        internal static void Initialize(Dictionary <Type, List <string> > sets)
        {
            if (_entitySetMappingsCache.Count > 0)
            {
                return;
            }
            lock (_object)
            {
                foreach (var set in sets)
                {
                    if (set.Value.Count > 1)
                    {
                        throw new InvalidOperationException();
                    }

                    var type = set.Key;

                    if (_entitySetMappingsCache.ContainsKey(type))
                    {
                        continue;
                    }

                    EntityType entityType = new EntityType(type.Name, type.NestingNamespace(), null);
                    var        entitySet  = new EntitySet(type.Name, "dbo", type.Name, entityType);

                    var properties = GetProperties(type, false, new Type[] { type }).ToList();
                    for (var i = 0; i < properties.Count; ++i)
                    {
                        var         propertyInfo = properties[i];
                        EdmProperty property     = new EdmProperty();
                        property.PropertyInfo = propertyInfo;
                        property.Name         = propertyInfo.Name;

                        var propertyType = propertyInfo.PropertyType;
                        property.Nullable = propertyType.TryUnwrapNullableType(out propertyType) || !propertyType.IsValueType();

                        PrimitiveTypeKind primitiveTypeKind;
                        if (EdmConstants.TryGetPrimitiveTypeKind(propertyType, out primitiveTypeKind))
                        {
                            property.TypeUsage = TypeUsage.Create(EdmConstants.GetPrimitiveType(primitiveTypeKind));
                        }
                        entitySet.ElementType.AddProperty(property);
                    }

                    var typeToLoad = type;
                    do
                    {
                        typeToLoad = typeToLoad.BaseType();
                    }while (typeToLoad != null && typeToLoad != typeof(Object));

                    if (typeToLoad == null || typeToLoad == typeof(Object))
                    {
                        typeToLoad = type;
                    }

                    _entitySetMappingsCache[type] = new EntitySetTypePair(entitySet, typeToLoad);
                }
            }
        }
示例#2
0
        public static ConstantPredicate Constant(object value)
        {
            Check.NotNull(value, "value");

            Type type = value.GetType();
            PrimitiveTypeKind primitiveTypeKind;

            if (!EdmConstants.TryGetPrimitiveTypeKind(type, out primitiveTypeKind))
            {
                throw new ArgumentException("type");
            }

            PrimitiveType primitiveType = EdmConstants.GetPrimitiveType(primitiveTypeKind);
            TypeUsage     typeusage     = TypeUsage.Create(primitiveType);

            return(new ConstantPredicate(typeusage, value));
        }