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)); }
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); } }
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(); }
public static void WriteEntityContainer(this EntityContainer container, Csdl.Schema schema, Configuration config, CSharpCodeWriter codeWriter) { config.LazyLoading = config.LazyLoading ?? container.LazyLoadingEnabled; container.WriteClass(schema, codeWriter); }