public static Association GetAssociationByName(this Csdl.Schema schema, string qualifiedName)
        {
            var namespacePrefix = schema.Namespace + '.';
            var localName       = qualifiedName.Substring(namespacePrefix.Length);

            return(schema.Associations.SingleOrDefault(t => t.Name == localName));
        }
        public static NamedElement FindTypeByName(this Csdl.Schema schema, string qualifiedName)
        {
            var namespacePrefix = schema.Namespace + '.';
            var localName       = qualifiedName.Substring(namespacePrefix.Length);

            return((NamedElement)schema.EntityTypes.SingleOrDefault(t => t.Name == localName)
                   ?? (NamedElement)schema.ComplexTypes.SingleOrDefault(t => t.Name == localName)
                   ?? (NamedElement)schema.EnumTypes.SingleOrDefault(t => t.Name == localName));
        }
        public static string GetInverseProperty(this Association assoc, Csdl.Schema schema, string toRole)
        {
            var otherEnd      = assoc.Ends.Single(e => e.Role == toRole);
            var otherType     = (EntityType)schema.FindTypeByName(otherEnd.Type);
            var fromRole      = assoc.Ends.Single(e => e != otherEnd).Role;
            var otherProperty = otherType.NavigationProperties.SingleOrDefault(p => p.FromRole == toRole && p.ToRole == fromRole);

            return(otherProperty == null ? null : (otherType.Name + "." + otherProperty.Name));
        }
Example #4
0
 public static void WriteComplexType(this ComplexType type,
                                     Csdl.Schema schema, Configuration config, CSharpCodeWriter codeWriter)
 {
     codeWriter.Type(config.ComplexMetaType, type.Name, null, Modifiers.Partial);
     foreach (var prop in type.Properties.OrEmpty())
     {
         prop.WriteOut(null, schema, codeWriter);
         codeWriter.NewLine();
     }
     codeWriter.BlockEnd();
 }
        public static string TypeNameToCLRType(this Csdl.Schema schema, string typeName, out bool valueType)
        {
            EdmSimpleType edmSimpleType;

            if (Enum.TryParse <EdmSimpleType>(typeName, out edmSimpleType))
            {
                valueType = true;
                switch (edmSimpleType)
                {
                case EdmSimpleType.Binary: valueType = false; return("byte[]");

                case EdmSimpleType.Boolean: return("bool");

                case EdmSimpleType.Byte: return("byte");

                case EdmSimpleType.DateTime: return(nameof(DateTime));

                case EdmSimpleType.DateTimeOffset: return(nameof(DateTimeOffset));

                case EdmSimpleType.Decimal: return("decimal");

                case EdmSimpleType.Double: return("double");

                case EdmSimpleType.Float: return("float");

                case EdmSimpleType.Guid: return(nameof(Guid));

                case EdmSimpleType.Int16: return("short");

                case EdmSimpleType.Int32: return("int");

                case EdmSimpleType.Int64: return("long");

                case EdmSimpleType.SByte: return("sbyte");

                case EdmSimpleType.String: valueType = false; return("string");

                case EdmSimpleType.Time: return(nameof(DateTime));

                default: throw new ArgumentOutOfRangeException();
                }
            }
            else
            {
                var otherType = schema.FindTypeByName(typeName);
                valueType = !(otherType is EntityType);
                return(otherType.Name);
            }
        }
Example #6
0
        public static void BeginNamespace(this Csdl.Schema schema, CSharpCodeWriter codeWriter, NamespaceFor nsFor)
        {
            codeWriter.Namespace(schema.Namespace);

            if ((nsFor & NamespaceFor.PrimitiveTypes) != 0)
            {
                codeWriter.Using("System");
            }
            if ((nsFor & NamespaceFor.CollectionTypes) != 0)
            {
                codeWriter.Using("System.Collections.Generic");
            }
            if ((nsFor & NamespaceFor.Annotations) != 0)
            {
                codeWriter.Using("System.ComponentModel.DataAnnotations");
                codeWriter.Using("System.ComponentModel.DataAnnotations.Schema");
            }
            if ((nsFor & NamespaceFor.DbContext) != 0)
            {
                codeWriter.Using("Microsoft.EntityFrameworkCore");
            }
            codeWriter.NewLine();
        }
Example #7
0
 public static void WriteEntityContainer(this EntityContainer container,
                                         Csdl.Schema schema, Configuration config, CSharpCodeWriter codeWriter)
 {
     config.LazyLoading = config.LazyLoading ?? container.LazyLoadingEnabled;
     container.WriteClass(schema, codeWriter);
 }