<# //********************************************************* // // Copyright (c) Microsoft. All rights reserved. // This code is licensed under the Microsoft Public License. // THIS CODE IS PROVIDED *AS IS* WITHOUT WARRANTY OF // ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY // IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR // PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT. // //********************************************************* #> <#@ template language="C#" debug="false" hostspecific="true"#> <#@ include file="EF.Utility.CS.ttinclude"#><#@ output extension=".cs"#><# CodeGenerationTools code = new CodeGenerationTools(this); MetadataTools ef = new MetadataTools(this); MetadataLoader loader = new MetadataLoader(this); CodeRegion region = new CodeRegion(this); string inputFile = @"WMSNamingService.edmx"; EdmItemCollection ItemCollection = loader.CreateEdmItemCollection(inputFile); string namespaceName = code.VsNamespaceSuggestion(); EntityContainer container = ItemCollection.GetItems().FirstOrDefault(); if (container == null) { return "// No EntityContainer exists in the model, so no code was generated"; } #> //------------------------------------------------------------------------------ // // This code was generated from a template. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //------------------------------------------------------------------------------ using System; using System.Data.Objects; using System.Data.EntityClient; <# if (!String.IsNullOrEmpty(namespaceName)) { #> namespace <#=code.EscapeNamespace(namespaceName)#> { <# PushIndent(CodeRegion.GetIndent(1)); } #> <#=Accessibility.ForType(container)#> partial class <#=code.Escape(container)#> : ObjectContext { public const string ConnectionString = "name=<#=container.Name#>"; public const string ContainerName = "<#=container.Name#>"; #region Constructors public <#=code.Escape(container)#>() : base(ConnectionString, ContainerName) { <# WriteLazyLoadingEnabled(container); #> } public <#=code.Escape(container)#>(string connectionString) : base(connectionString, ContainerName) { <# WriteLazyLoadingEnabled(container); #> } public <#=code.Escape(container)#>(EntityConnection connection) : base(connection, ContainerName) { <# WriteLazyLoadingEnabled(container); #> } #endregion <# region.Begin("ObjectSet Properties", 2); foreach (EntitySet entitySet in container.BaseEntitySets.OfType()) { #> <#=Accessibility.ForReadOnlyProperty(entitySet)#> ObjectSet<<#=code.Escape(entitySet.ElementType)#>> <#=code.Escape(entitySet)#> { get { return <#=code.FieldName(entitySet) #> ?? (<#=code.FieldName(entitySet)#> = CreateObjectSet<<#=code.Escape(entitySet.ElementType)#>>("<#=entitySet.Name#>")); } } private ObjectSet<<#=code.Escape(entitySet.ElementType)#>> <#=code.FieldName(entitySet)#>; <# } region.End(); region.Begin("Function Imports"); foreach (EdmFunction edmFunction in container.FunctionImports) { var parameters = FunctionImportParameter.Create(edmFunction.Parameters, code, ef); string paramList = String.Join(", ", parameters.Select(p => p.FunctionParameterType + " " + p.FunctionParameterName).ToArray()); if (edmFunction.ReturnParameter == null) { continue; } string returnTypeElement = code.Escape(ef.GetElementType(edmFunction.ReturnParameter.TypeUsage)); #> <#=Accessibility.ForMethod(edmFunction)#> ObjectResult<<#=returnTypeElement#>> <#=code.Escape(edmFunction)#>(<#=paramList#>) { <# foreach (var parameter in parameters) { if (!parameter.NeedsLocalVariable) { continue; } #> ObjectParameter <#=parameter.LocalVariableName#>; if (<#=parameter.IsNullableOfT ? parameter.FunctionParameterName + ".HasValue" : parameter.FunctionParameterName + " != null"#>) { <#=parameter.LocalVariableName#> = new ObjectParameter("<#=parameter.EsqlParameterName#>", <#=parameter.FunctionParameterName#>); } else { <#=parameter.LocalVariableName#> = new ObjectParameter("<#=parameter.EsqlParameterName#>", typeof(<#=parameter.RawClrTypeName#>)); } <# } #> return base.ExecuteFunction<<#=returnTypeElement#>>("<#=edmFunction.Name#>"<#=code.StringBefore(", ", String.Join(", ", parameters.Select(p => p.ExecuteParameterName).ToArray()))#>); } <# } region.End(); #> } <# if (!String.IsNullOrEmpty(namespaceName)) { PopIndent(); #> } <# } #> <#+ private void WriteLazyLoadingEnabled(EntityContainer container) { string lazyLoadingAttributeValue = null; string lazyLoadingAttributeName = MetadataConstants.EDM_ANNOTATION_09_02 + ":LazyLoadingEnabled"; if(MetadataTools.TryGetStringMetadataPropertySetting(container, lazyLoadingAttributeName, out lazyLoadingAttributeValue)) { bool isLazyLoading = false; if(bool.TryParse(lazyLoadingAttributeValue, out isLazyLoading)) { #> this.ContextOptions.LazyLoadingEnabled = <#=isLazyLoading.ToString().ToLowerInvariant()#>; <#+ } } } #>