[4276] | 1 | <# // L2ST4 - LINQ to SQL templates for T4 v0.82 - http://www.codeplex.com/l2st4
|
---|
| 2 | // Copyright (c) Microsoft Corporation. All rights reserved.
|
---|
| 3 | // This source code is made available under the terms of the Microsoft Public License (MS-PL)
|
---|
| 4 | #><#@ template language="C#" hostspecific="True"
|
---|
| 5 | #><#@ include file="L2ST4.ttinclude"
|
---|
| 6 | #><#@ output extension=".generated.cs"
|
---|
| 7 | #><# // Set options here
|
---|
| 8 | var options = new {
|
---|
| 9 | DbmlFileName = Host.TemplateFile.Replace(".tt",".dbml"), // Which DBML file to operate on (same filename as template)
|
---|
| 10 | SerializeDataContractSP1 = true, // Emit SP1 DataContract serializer attributes
|
---|
| 11 | FilePerEntity = false, // Put each class into a separate file
|
---|
| 12 | StoredProcedureConcurrency = false, // Table updates via an SP require @@rowcount to be returned to enable concurrency
|
---|
| 13 | EntityFilePath = Path.GetDirectoryName(Host.TemplateFile) // Where to put the files
|
---|
| 14 | };
|
---|
| 15 | var code = new CSharpCodeLanguage();
|
---|
| 16 | var data = new Data(options.DbmlFileName);
|
---|
| 17 | var manager = new Manager(Host, GenerationEnvironment, true) { OutputPath = options.EntityFilePath };
|
---|
| 18 | data.ContextNamespace = (new string[] { manager.GetCustomToolNamespace(data.DbmlFileName), data.SpecifiedContextNamespace, manager.DefaultProjectNamespace }).FirstOrDefault(s => !String.IsNullOrEmpty(s));
|
---|
| 19 | data.EntityNamespace = (new string[] { manager.GetCustomToolNamespace(data.DbmlFileName), data.SpecifiedEntityNamespace, manager.DefaultProjectNamespace }).FirstOrDefault(s => !String.IsNullOrEmpty(s));
|
---|
| 20 | manager.StartHeader();
|
---|
| 21 | #>#pragma warning disable 1591
|
---|
| 22 | //------------------------------------------------------------------------------
|
---|
| 23 | // <auto-generated>
|
---|
| 24 | // This code was generated by LINQ to SQL template for T4 C#
|
---|
| 25 | // Generated at <#=DateTime.Now#>
|
---|
| 26 | //
|
---|
| 27 | // Changes to this file may cause incorrect behavior and will be lost if
|
---|
| 28 | // the code is regenerated.
|
---|
| 29 | // </auto-generated>
|
---|
| 30 | //------------------------------------------------------------------------------
|
---|
| 31 | using System;
|
---|
| 32 | using System.ComponentModel;
|
---|
| 33 | using System.Data.Linq;
|
---|
| 34 | using System.Data.Linq.Mapping;
|
---|
| 35 | <#if (data.Functions.Count > 0) {#>
|
---|
| 36 | using System.Reflection;
|
---|
| 37 | <#}
|
---|
| 38 | string dataContractAttributes = (options.SerializeDataContractSP1) ? "IsReference=true" : "";
|
---|
| 39 | if (data.Serialization) {#>
|
---|
| 40 | using System.Runtime.Serialization;
|
---|
| 41 | <#}#>
|
---|
| 42 |
|
---|
| 43 | <# manager.EndHeader();
|
---|
| 44 | if(!String.IsNullOrEmpty(data.ContextNamespace)){#>
|
---|
| 45 | namespace <#=data.ContextNamespace#>
|
---|
| 46 | {
|
---|
| 47 | <#}#>
|
---|
| 48 | [DatabaseAttribute(Name=@"<#=data.DatabaseName#>")]
|
---|
| 49 | <#=code.Format(data.TypeAttributes)#>partial class <#=data.ContextName#> : <#=data.BaseClassName#>
|
---|
| 50 | {
|
---|
| 51 | private static MappingSource mappingSource = new AttributeMappingSource();
|
---|
| 52 |
|
---|
| 53 | #region Extensibility Method Definitions
|
---|
| 54 | partial void OnCreated();
|
---|
| 55 | <# var tableOperations = new List<TableOperation>();
|
---|
| 56 | foreach(var table in data.Tables)
|
---|
| 57 | tableOperations.AddRange(table.Operations);
|
---|
| 58 | foreach(Table table in data.Tables)
|
---|
| 59 | foreach(OperationType operationType in Enum.GetValues(typeof(OperationType)))
|
---|
| 60 | if (!tableOperations.Any(o => (o.Table == table) && (o.Type == operationType))) {#>
|
---|
| 61 | partial void <#=operationType#><#=table.BaseClass.Name#>(<#=table.BaseClass.QualifiedName#> instance);
|
---|
| 62 | <#}#>
|
---|
| 63 | #endregion
|
---|
| 64 |
|
---|
| 65 | #region Construction
|
---|
| 66 | <#if (data.ConnectSettingsObject != null) {#>
|
---|
| 67 | public <#=data.ContextName#>() :
|
---|
| 68 | base(global::<#=data.ConnectSettingsObject#>.Default.<#=data.ConnectSettingsProperty#>, mappingSource)
|
---|
| 69 | {
|
---|
| 70 | OnCreated();
|
---|
| 71 | }
|
---|
| 72 | <#}#>
|
---|
| 73 | public <#=data.ContextName#>(string connection) :
|
---|
| 74 | base(connection, mappingSource)
|
---|
| 75 | {
|
---|
| 76 | OnCreated();
|
---|
| 77 | }
|
---|
| 78 |
|
---|
| 79 | public <#=data.ContextName#>(System.Data.IDbConnection connection) :
|
---|
| 80 | base(connection, mappingSource)
|
---|
| 81 | {
|
---|
| 82 | OnCreated();
|
---|
| 83 | }
|
---|
| 84 |
|
---|
| 85 | public <#=data.ContextName#>(string connection, MappingSource mappingSource) :
|
---|
| 86 | base(connection, mappingSource)
|
---|
| 87 | {
|
---|
| 88 | OnCreated();
|
---|
| 89 | }
|
---|
| 90 |
|
---|
| 91 | public <#=data.ContextName#>(System.Data.IDbConnection connection, MappingSource mappingSource) :
|
---|
| 92 | base(connection, mappingSource)
|
---|
| 93 | {
|
---|
| 94 | OnCreated();
|
---|
| 95 | }
|
---|
| 96 | #endregion
|
---|
| 97 | <#if(data.Tables.Count > 0) {#>
|
---|
| 98 |
|
---|
| 99 | #region Tables
|
---|
| 100 | <# foreach(Table table in data.Tables) {
|
---|
| 101 | #> <#=code.GetAccess(table.BaseClass.TypeAttributes)#>Table<<#=table.BaseClass.QualifiedName#>> <#=table.Member#>
|
---|
| 102 | {
|
---|
| 103 | get { return GetTable<<#=table.BaseClass.QualifiedName#>>(); }
|
---|
| 104 | }
|
---|
| 105 |
|
---|
| 106 | <# }
|
---|
| 107 | #> #endregion
|
---|
| 108 | <#}
|
---|
| 109 | if (data.Functions.Count > 0) {#>
|
---|
| 110 |
|
---|
| 111 | #region Functions
|
---|
| 112 | <# foreach(Function function in data.Functions) {
|
---|
| 113 | #>
|
---|
| 114 | [Function(Name=@"<#=function.Name#>"<#
|
---|
| 115 | if (function.IsComposable) {#>, IsComposable=true<#}
|
---|
| 116 | #>)]
|
---|
| 117 | <# if (function.Return != null && function.Return.DbType != null) {
|
---|
| 118 | #> [return: Parameter(DbType=@"<#=function.Return.DbType#>")]
|
---|
| 119 | <# }
|
---|
| 120 | if (function.HasMultipleResults) {
|
---|
| 121 | foreach(Class class1 in function.Classes) {#>
|
---|
| 122 | [ResultType(typeof(<#=class1.QualifiedName#>))]
|
---|
| 123 | <# }
|
---|
| 124 | }#>
|
---|
| 125 | <#=code.Format(function.MemberAttributes)#><#=code.Format(function.ReturnType)#> <#=function.Method#>(<#
|
---|
| 126 | foreach(Parameter parameter in function.Parameters) {#>
|
---|
| 127 |
|
---|
| 128 | [Parameter(Name=@"<#=parameter.DbName#>", DbType=@"<#=parameter.DbType#>")] <#=code.Format(parameter.Direction)#><#=code.Format(parameter.Type)#> <#=parameter.Name#><#
|
---|
| 129 | if (parameter != function.Parameters.Last()) {#>,<# }
|
---|
| 130 | }
|
---|
| 131 | #>) {
|
---|
| 132 | <# foreach(Parameter outParameter in function.Parameters.Where(p => p.Direction == ParameterDirection.Out)) {#>
|
---|
| 133 | <#=outParameter.Name#> = default(<#=code.Format(outParameter.Type)#>);
|
---|
| 134 | <# }#>
|
---|
| 135 | IExecuteResult result = ExecuteMethodCall(this, (MethodInfo) MethodInfo.GetCurrentMethod()<#=String.Join("", function.Parameters.Select(p => ", " + p.Name).ToArray())#>);
|
---|
| 136 | <# int paramIdx = 0;
|
---|
| 137 | foreach(Parameter parameter in function.Parameters) {
|
---|
| 138 | if (parameter.Direction != ParameterDirection.In) {#>
|
---|
| 139 | <#=parameter.Name#> = (<#=code.Format(parameter.Type)#>) result.GetParameterValue(<#=paramIdx#>);
|
---|
| 140 | <# }
|
---|
| 141 | paramIdx++;
|
---|
| 142 | }
|
---|
| 143 | #> return (<#=code.Format(function.ReturnType)#>) result.ReturnValue;
|
---|
| 144 | }
|
---|
| 145 |
|
---|
| 146 | <# }#>
|
---|
| 147 | #endregion
|
---|
| 148 |
|
---|
| 149 | <# if (tableOperations.Count > 0) { #>
|
---|
| 150 | #region Table Operations
|
---|
| 151 | <# foreach(var operation in tableOperations) { #>
|
---|
| 152 | private void <#=operation.Type#><#=operation.Table.BaseClass.Name#>(<#=operation.Table.BaseClass.QualifiedName#> obj) {
|
---|
| 153 | <# if (operation.Arguments.Any(a => a.Version == ArgumentVersion.Original)) {
|
---|
| 154 | #> var original = <#=operation.Table.Member#>.GetOriginalEntityState(obj);
|
---|
| 155 | <# }
|
---|
| 156 | int paramIdx = 1;
|
---|
| 157 | foreach(var argument in operation.Arguments.Where(a => a.Parameter.Direction != ParameterDirection.In)) {
|
---|
| 158 | #> <#=code.Format(argument.Parameter.Type)#> p<#=paramIdx++#> = obj.<#=argument.Member#>;
|
---|
| 159 | <# }#>
|
---|
| 160 | <# if (options.StoredProcedureConcurrency) {#>var rowCount = <#}#><#=operation.Function.Method#>(<#
|
---|
| 161 | paramIdx = 1;
|
---|
| 162 | foreach(var argument in operation.Arguments) {
|
---|
| 163 | switch(argument.Parameter.Direction) {
|
---|
| 164 | case ParameterDirection.InOut: #>ref p<#=paramIdx++#><# break;
|
---|
| 165 | case ParameterDirection.Out: #>out p<#=paramIdx++#><# break;
|
---|
| 166 | default: #><#=(argument.Version == ArgumentVersion.New) ? "obj" : "original"#>.<#=argument.Member#><# break;
|
---|
| 167 | }
|
---|
| 168 | if (argument != operation.Arguments.Last()) {#>, <#}
|
---|
| 169 | }
|
---|
| 170 | #>);
|
---|
| 171 | <# if (options.StoredProcedureConcurrency) {#>
|
---|
| 172 | if (rowCount != 1) {
|
---|
| 173 | throw new ChangeConflictException();
|
---|
| 174 | }
|
---|
| 175 | <# }
|
---|
| 176 | paramIdx = 1;
|
---|
| 177 | foreach(var argument in operation.Arguments.Where(a => a.Parameter.Direction != ParameterDirection.In)) {
|
---|
| 178 | #> obj.<#=argument.Member#> = p<#=paramIdx++#>.GetValueOrDefault();
|
---|
| 179 | <# }#>
|
---|
| 180 | }
|
---|
| 181 |
|
---|
| 182 | <#
|
---|
| 183 | }
|
---|
| 184 | #>
|
---|
| 185 | #endregion
|
---|
| 186 | <# }
|
---|
| 187 | }#>
|
---|
| 188 | }
|
---|
| 189 | <#if (!String.IsNullOrEmpty(data.ContextNamespace)) {
|
---|
| 190 | #>}
|
---|
| 191 | <#}
|
---|
| 192 | foreach(Table table in data.Tables) {
|
---|
| 193 | foreach(TableClass class1 in table.Classes) {
|
---|
| 194 | manager.StartBlock(Path.ChangeExtension(class1.Name,".generated.cs"));
|
---|
| 195 | if (!String.IsNullOrEmpty(data.EntityNamespace)) {#>
|
---|
| 196 |
|
---|
| 197 | namespace <#=data.EntityNamespace#>
|
---|
| 198 | {
|
---|
| 199 | <# }
|
---|
| 200 | if (data.Serialization && class1.IsSerializable) {
|
---|
| 201 | #> [DataContract(<#=dataContractAttributes#>)]
|
---|
| 202 | <# }
|
---|
| 203 | if (class1 == table.BaseClass) {#>
|
---|
| 204 | [Table(Name=@"<#=table.Name#>")]
|
---|
| 205 | <# foreach(TableClass subclass in data.TableClasses.Where(c => c.Table == table)) {
|
---|
| 206 | if (!String.IsNullOrEmpty(subclass.InheritanceCode)) {#>
|
---|
| 207 | [InheritanceMapping(Code=@"<#=subclass.InheritanceCode#>", Type=typeof(<#=subclass.Name#>)<# if (subclass.IsInheritanceDefault) {#>, IsDefault=true<#}#>)]
|
---|
| 208 | <# }
|
---|
| 209 | if (data.Serialization && subclass.IsSerializable) {#>[KnownType(typeof(<#=subclass.Name#>))]<#}
|
---|
| 210 | }
|
---|
| 211 | #> <#=code.Format(class1.TypeAttributes)#>partial class <#=class1.Name#> :<#if (!String.IsNullOrEmpty(data.EntityBase)) {#> <#=data.EntityBase#>, <#}#> INotifyPropertyChanging, INotifyPropertyChanged
|
---|
| 212 | {
|
---|
| 213 | #region Property Change Event Handling
|
---|
| 214 | private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
|
---|
| 215 |
|
---|
| 216 | public event PropertyChangingEventHandler PropertyChanging;
|
---|
| 217 | public event PropertyChangedEventHandler PropertyChanged;
|
---|
| 218 |
|
---|
| 219 | <#=code.Format(class1.PropertyChangeAccess)#>void SendPropertyChanging()
|
---|
| 220 | {
|
---|
| 221 | if (PropertyChanging != null) {
|
---|
| 222 | PropertyChanging(this, emptyChangingEventArgs);
|
---|
| 223 | }
|
---|
| 224 | }
|
---|
| 225 |
|
---|
| 226 | <#=code.Format(class1.PropertyChangeAccess)#>void SendPropertyChanged(String propertyName)
|
---|
| 227 | {
|
---|
| 228 | if (PropertyChanged != null) {
|
---|
| 229 | PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
|
---|
| 230 | }
|
---|
| 231 | }
|
---|
| 232 | #endregion
|
---|
| 233 |
|
---|
| 234 | <# } else {
|
---|
| 235 | #> <#=code.Format(class1.TypeAttributes)#>partial class <#=class1.Name#> : <#=class1.SuperClass.Name#>
|
---|
| 236 | {
|
---|
| 237 | <# }#>
|
---|
| 238 | #region Extensibility Method Definitions
|
---|
| 239 | partial void OnLoaded();
|
---|
| 240 | partial void OnValidate(ChangeAction action);
|
---|
| 241 | <# if (class1.HasPrimaryKey) {#>
|
---|
| 242 | partial void OnCreated();
|
---|
| 243 | <# }#>
|
---|
| 244 | #endregion
|
---|
| 245 |
|
---|
| 246 | #region Construction
|
---|
| 247 | public <#=class1.Name#>()
|
---|
| 248 | {
|
---|
| 249 | <# if (data.Serialization) {
|
---|
| 250 | #> Initialize();
|
---|
| 251 | }
|
---|
| 252 |
|
---|
| 253 | private void Initialize()
|
---|
| 254 | {
|
---|
| 255 | <# }
|
---|
| 256 | foreach(Association association in class1.Associations) {
|
---|
| 257 | #> <#=association.Storage#> = <#
|
---|
| 258 | if (association.IsMany) {
|
---|
| 259 | #>new EntitySet<<#=association.Type.Name#>>(attach_<#=association.Member#>, detach_<#=association.Member#>);
|
---|
| 260 | <# } else {
|
---|
| 261 | #>default(EntityRef<<#=association.Type.Name#>>);
|
---|
| 262 | <# }
|
---|
| 263 | }
|
---|
| 264 | if (class1.HasPrimaryKey) {#>
|
---|
| 265 | OnCreated();
|
---|
| 266 | <# }#>
|
---|
| 267 | }
|
---|
| 268 | #endregion
|
---|
| 269 |
|
---|
| 270 | <# int dataMemberIndex = 1;
|
---|
| 271 | if (class1.Columns.Count > 0) {
|
---|
| 272 | #> #region Column Mappings
|
---|
| 273 | <# foreach(Column column in class1.Columns) {#>
|
---|
| 274 | partial void On<#=column.Member#>Changing(<#=code.Format(column.Type)#> value);
|
---|
| 275 | partial void On<#=column.Member#>Changed();
|
---|
| 276 | private <#=code.Format(column.StorageType)#> <#=column.Storage#><# if (column.IsReadOnly) {#> = default(<#=code.Format(column.StorageType)#>)<#}#>;
|
---|
| 277 | [Column(Storage=@"<#=column.Storage#>"<#
|
---|
| 278 | if (column.Name != column.Member) {#>, Name=@"<#=column.Name#>"<#}
|
---|
| 279 | if (column.AutoSync != AutoSync.Default) {#>, AutoSync=AutoSync.<#=column.AutoSync.ToString()#><#}
|
---|
| 280 | if (!String.IsNullOrEmpty(column.DbType)) {#>, DbType=@"<#=column.DbType#>"<#}
|
---|
| 281 | if (column.IsPrimaryKey) {#>, IsPrimaryKey=true<#}
|
---|
| 282 | if (column.IsDiscriminator) {#>, IsDiscriminator=true<#}
|
---|
| 283 | if (column.IsDbGenerated) {#>, IsDbGenerated=true<#}
|
---|
| 284 | if (column.IsVersion) {#>, IsVersion=true<#}
|
---|
| 285 | if (!column.CanBeNull && !column.IsPrimaryKey) {#>, CanBeNull=false<#}
|
---|
| 286 | if (column.UpdateCheck != UpdateCheck.Always) {#>, UpdateCheck=UpdateCheck.<#=column.UpdateCheck.ToString()#><#}
|
---|
| 287 | if (!String.IsNullOrEmpty(column.Expression)) {#>, Expression=@"<#=column.Expression#>"<#}
|
---|
| 288 | #>)]
|
---|
| 289 | <# if (data.Serialization && ((column.MemberAttributes & MemberAttributes.AccessMask) == MemberAttributes.Public)) {
|
---|
| 290 | #> [DataMember(Order=<#=dataMemberIndex++#>)]
|
---|
| 291 | <# }
|
---|
| 292 | #> <#=code.Format(column.MemberAttributes)#><#=code.Format(column.Type)#> <#=column.Member#>
|
---|
| 293 | {
|
---|
| 294 | get { return <#=column.StorageValue#>; }
|
---|
| 295 | <# if (!column.IsReadOnly) { #>
|
---|
| 296 | set {
|
---|
| 297 | if (<#=column.StorageValue#> != value) {
|
---|
| 298 | <# if (column.ForeignKeyAssociations.Count > 0) {#>
|
---|
| 299 | if (<#=String.Join(" || ", column.ForeignKeyAssociations.Select(a => a.Storage + ".HasLoadedOrAssignedValue").ToArray())#>) {
|
---|
| 300 | throw new ForeignKeyReferenceAlreadyHasValueException();
|
---|
| 301 | }
|
---|
| 302 | <# }#>
|
---|
| 303 | On<#=column.Member#>Changing(value);
|
---|
| 304 | SendPropertyChanging();
|
---|
| 305 | <#=column.StorageValue#> = value;
|
---|
| 306 | SendPropertyChanged("<#=column.Member#>");
|
---|
| 307 | On<#=column.Member#>Changed();
|
---|
| 308 | }
|
---|
| 309 | }
|
---|
| 310 | <# }#>
|
---|
| 311 | }
|
---|
| 312 |
|
---|
| 313 | <# }#>
|
---|
| 314 | #endregion
|
---|
| 315 | <# }
|
---|
| 316 | bool needsSerializationFlag = class1.IsSerializable && class1.Associations.Any(a => !a.ManagesKeys);
|
---|
| 317 | if (class1.Associations.Count > 0) {
|
---|
| 318 | #>
|
---|
| 319 | #region Associations
|
---|
| 320 | <# foreach(Association association in class1.Associations) {#>
|
---|
| 321 | private Entity<#=(association.IsMany) ? "Set" : "Ref"#><<#=association.Type.Name#>> <#=association.Storage#>;
|
---|
| 322 | [Association(Name=@"<#=association.Name#>"<#
|
---|
| 323 | #>, Storage=@"<#=association.Storage#>"<#
|
---|
| 324 | if (association.ThisKeyMembers != null) {#>, ThisKey=@"<#=String.Join(",", association.ThisKeyMembers)#>"<#}
|
---|
| 325 | if (association.OtherKeyMembers != null) {#>, OtherKey=@"<#=String.Join(",", association.OtherKeyMembers)#>"<#}
|
---|
| 326 | if (association.IsForeignKey) {#>, IsForeignKey=true<#}
|
---|
| 327 | if (association.IsUnique) {#>, IsUnique=true, IsForeignKey=false<#}
|
---|
| 328 | if (association.DeleteOnNull) {#>, DeleteOnNull=true<#}
|
---|
| 329 | if (association.DeleteRule != null) {#>, DeleteRule=@"<#=association.DeleteRule #>"<#}
|
---|
| 330 | #>)]
|
---|
| 331 | <# bool serialization = association.IsSerializable && data.Serialization &&
|
---|
| 332 | (options.SerializeDataContractSP1 || !association.ManagesKeys);
|
---|
| 333 | if (serialization) {
|
---|
| 334 | #> [DataMember(Order=<#=dataMemberIndex++#>, EmitDefaultValue=false)]
|
---|
| 335 | <# }
|
---|
| 336 | if (!association.IsMany) {#>
|
---|
| 337 | <#=code.Format(association.MemberAttributes)#><#=association.Type.Name#> <#=association.Member#>
|
---|
| 338 | {
|
---|
| 339 | get {
|
---|
| 340 | <# if (needsSerializationFlag && serialization) {#>
|
---|
| 341 | if (serializing && !<#=association.Storage#>.HasLoadedOrAssignedValue) {
|
---|
| 342 | return null;
|
---|
| 343 | }
|
---|
| 344 | <# }#>
|
---|
| 345 | return <#=association.Storage#>.Entity;
|
---|
| 346 | }
|
---|
| 347 | set {
|
---|
| 348 | <#=association.Type.Name#> previousValue = <#=association.Storage#>.Entity;
|
---|
| 349 | if ((previousValue != value)<#if (association.OtherSide != null) {#> || (!<#=association.Storage#>.HasLoadedOrAssignedValue)<#}#>) {
|
---|
| 350 | SendPropertyChanging();
|
---|
| 351 | <# if (association.OtherSide != null) {#>
|
---|
| 352 | if (previousValue != null) {
|
---|
| 353 | <#=association.Storage#>.Entity = null;
|
---|
| 354 | previousValue.<#=association.OtherSide.Member#><#if (!association.OtherSide.IsMany) {#> = null<#} else {#>.Remove(this)<#}#>;
|
---|
| 355 | }
|
---|
| 356 | <# }
|
---|
| 357 | #> <#=association.Storage#>.Entity = value;
|
---|
| 358 | <# if (association.OtherSide != null) {#>
|
---|
| 359 | if (value != null) {
|
---|
| 360 | value.<#=association.OtherSide.Member#><#if (!association.OtherSide.IsMany) {#> = this<#} else {#>.Add(this)<#}#>;
|
---|
| 361 | <# if (association.ManagesKeys) {
|
---|
| 362 | for(int keyIdx=0;keyIdx<association.ThisKey.Count();keyIdx++) {#>
|
---|
| 363 | <#=association.ThisKey[keyIdx].Storage#> = value.<#=association.OtherKey[keyIdx].Member#>;
|
---|
| 364 | <# }#>
|
---|
| 365 | }
|
---|
| 366 | else {
|
---|
| 367 | <# for(int keyIdx=0;keyIdx<association.ThisKey.Count();keyIdx++) {
|
---|
| 368 | #> <#=association.ThisKey[keyIdx].Storage#> = default(<#=code.Format(association.ThisKey[keyIdx].Type)#>);
|
---|
| 369 | <# }
|
---|
| 370 | }
|
---|
| 371 | #> }
|
---|
| 372 | <# }#>
|
---|
| 373 | SendPropertyChanged("<#=association.Member#>");
|
---|
| 374 | }
|
---|
| 375 | }
|
---|
| 376 | }
|
---|
| 377 |
|
---|
| 378 | <# } else {#>
|
---|
| 379 | <#=code.Format(association.MemberAttributes)#>EntitySet<<#=association.Type.Name#>> <#=association.Member#>
|
---|
| 380 | {
|
---|
| 381 | get {
|
---|
| 382 | <# if (needsSerializationFlag && serialization) {#>
|
---|
| 383 | if (serializing && !<#=association.Storage#>.HasLoadedOrAssignedValues) {
|
---|
| 384 | return null;
|
---|
| 385 | }
|
---|
| 386 | <# } #>
|
---|
| 387 | return <#=association.Storage#>;
|
---|
| 388 | }
|
---|
| 389 | set {
|
---|
| 390 | <#=association.Storage#>.Assign(value);
|
---|
| 391 | }
|
---|
| 392 | }
|
---|
| 393 |
|
---|
| 394 | private void attach_<#=association.Member#>(<#=association.Type.Name#> entity)
|
---|
| 395 | {
|
---|
| 396 | SendPropertyChanging();
|
---|
| 397 | entity.<#=association.OtherSide.Member#> = this;
|
---|
| 398 | }
|
---|
| 399 |
|
---|
| 400 | private void detach_<#=association.Member#>(<#=association.Type.Name#> entity)
|
---|
| 401 | {
|
---|
| 402 | SendPropertyChanging();
|
---|
| 403 | entity.<#=association.OtherSide.Member#> = null;
|
---|
| 404 | }
|
---|
| 405 | <# }
|
---|
| 406 | }#>
|
---|
| 407 | #endregion
|
---|
| 408 | <# }
|
---|
| 409 | if (data.Serialization) {#>
|
---|
| 410 |
|
---|
| 411 | #region Serialization
|
---|
| 412 | <# if (needsSerializationFlag) {#>
|
---|
| 413 | private bool serializing;
|
---|
| 414 |
|
---|
| 415 | [OnSerializing()]
|
---|
| 416 | [EditorBrowsableAttribute(EditorBrowsableState.Never)]
|
---|
| 417 | public void OnSerializing(StreamingContext context)
|
---|
| 418 | {
|
---|
| 419 | serializing = true;
|
---|
| 420 | }
|
---|
| 421 |
|
---|
| 422 | [OnSerialized()]
|
---|
| 423 | [EditorBrowsableAttribute(EditorBrowsableState.Never)]
|
---|
| 424 | public void OnSerialized(StreamingContext context)
|
---|
| 425 | {
|
---|
| 426 | serializing = false;
|
---|
| 427 | }
|
---|
| 428 |
|
---|
| 429 | <# }#>
|
---|
| 430 | [OnDeserializing()]
|
---|
| 431 | [EditorBrowsableAttribute(EditorBrowsableState.Never)]
|
---|
| 432 | public <#if (class1 != table.BaseClass) {#>new<#}#> void OnDeserializing(StreamingContext context)
|
---|
| 433 | {
|
---|
| 434 | Initialize();
|
---|
| 435 | }
|
---|
| 436 | #endregion
|
---|
| 437 | <# }
|
---|
| 438 | #> }
|
---|
| 439 | <# if (!String.IsNullOrEmpty(data.EntityNamespace)) {#>
|
---|
| 440 | }
|
---|
| 441 | <# }
|
---|
| 442 | manager.EndBlock();
|
---|
| 443 | }
|
---|
| 444 | }
|
---|
| 445 | if (data.FunctionClasses.Count > 0) {
|
---|
| 446 | foreach(FunctionClass class1 in data.FunctionClasses) {
|
---|
| 447 | manager.StartBlock(Path.ChangeExtension(class1.Name,".generated.cs"));
|
---|
| 448 | if(!String.IsNullOrEmpty(data.EntityNamespace)){#>
|
---|
| 449 |
|
---|
| 450 | namespace <#=data.EntityNamespace#>
|
---|
| 451 | {
|
---|
| 452 | <# }
|
---|
| 453 | if (data.Serialization) {
|
---|
| 454 | #> [DataContract(<#=dataContractAttributes#>)]
|
---|
| 455 | <# } #>
|
---|
| 456 | <#=code.Format(class1.TypeAttributes)#>partial class <#=class1.Name#>
|
---|
| 457 | {
|
---|
| 458 | <# int dataMemberIndex = 1;
|
---|
| 459 | foreach(Column column in class1.Columns) {#>
|
---|
| 460 | private <#=code.Format(column.Type)#> <#=column.Storage#>;
|
---|
| 461 | [Column(Storage=@"<#=column.Storage#>"<#
|
---|
| 462 | if (column.Name != column.Member) {#>, Name=@"<#=column.Name#>"<#}
|
---|
| 463 | if (!String.IsNullOrEmpty(column.DbType)) {#>, DbType=@"<#=column.DbType#>"<#}
|
---|
| 464 | if (!column.CanBeNull && !column.IsPrimaryKey) {#>, CanBeNull=false<#}
|
---|
| 465 | #>)]
|
---|
| 466 | <# if (data.Serialization && ((column.MemberAttributes & MemberAttributes.AccessMask) == MemberAttributes.Public)) {
|
---|
| 467 | #> [DataMember(Order=<#=dataMemberIndex++#>)]
|
---|
| 468 | <# }
|
---|
| 469 | #> <#=code.Format(column.MemberAttributes)#><#=code.Format(column.Type)#> <#=column.Member#> {
|
---|
| 470 | get { return <#=column.Storage#>; }
|
---|
| 471 | set {
|
---|
| 472 | if (<#=column.Storage#> != value) {
|
---|
| 473 | <#=column.Storage#> = value;
|
---|
| 474 | }
|
---|
| 475 | }
|
---|
| 476 | }
|
---|
| 477 | <# } #>
|
---|
| 478 | }
|
---|
| 479 | <# if (!String.IsNullOrEmpty(data.EntityNamespace)) {#>
|
---|
| 480 | }
|
---|
| 481 | <# }
|
---|
| 482 | manager.EndBlock();
|
---|
| 483 | }
|
---|
| 484 | }
|
---|
| 485 | manager.StartFooter();#>
|
---|
| 486 | #pragma warning restore 1591<#
|
---|
| 487 | manager.EndFooter();
|
---|
| 488 | manager.Process(options.FilePerEntity);#> |
---|