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);#> |
---|