Produced by Araxis Merge on 1/17/2019 1:50:43 PM Central Standard Time. See www.araxis.com for information about Merge. This report uses XHTML and CSS2, and is best viewed with a modern standards-compliant browser. For optimum results when printing this report, use landscape orientation and enable printing of background images and colours in your browser.
# | Location | File | Last Modified |
---|---|---|---|
1 | C:\AraxisMergeCompare\Pri_un\ccra\ccra_automation\packages\EntityFramework.6.2.0\tools | EntityFramework.psm1 | Thu Jan 10 13:20:28 2019 UTC |
2 | C:\AraxisMergeCompare\Pri_re\ccra\ccra_automation\packages\EntityFramework.6.2.0\tools | EntityFramework.psm1 | Thu Jan 10 17:04:38 2019 UTC |
Description | Between Files 1 and 2 |
|
---|---|---|
Text Blocks | Lines | |
Unchanged | 3 | 2348 |
Changed | 2 | 4 |
Inserted | 0 | 0 |
Removed | 0 | 0 |
Whitespace | |
---|---|
Character case | Differences in character case are significant |
Line endings | Differences in line endings (CR and LF characters) are ignored |
CR/LF characters | Not shown in the comparison detail |
No regular expressions were active.
1 | # Copyrigh t (c) Micr osoft Corp oration. All rights reserved. | |
2 | ||
3 | $InitialDa tabase = ' 0' | |
4 | ||
5 | $knownExce ptions = @ ( | |
6 | 'Syste m.Data.Ent ity.Migrat ions.Infra structure. Migrations Exception' , | |
7 | 'Syste m.Data.Ent ity.Migrat ions.Infra structure. AutomaticM igrationsD isabledExc eption', | |
8 | 'Syste m.Data.Ent ity.Migrat ions.Infra structure. AutomaticD ataLossExc eption', | |
9 | 'Syste m.Data.Ent ity.Migrat ions.Infra structure. Migrations PendingExc eption', | |
10 | 'Syste m.Data.Ent ity.Migrat ions.Proje ctTypeNotS upportedEx ception' | |
11 | ) | |
12 | ||
13 | <# | |
14 | .SYNOPSIS | |
15 | Adds o r updates an Entity Framework provider e ntry in th e project config | |
16 | file. | |
17 | ||
18 | .DESCRIPTI ON | |
19 | Adds a n entry in to the 'en tityFramew ork' secti on of the project co nfig | |
20 | file f or the spe cified pro vider inva riant name and provi der type. If an | |
21 | entry for the gi ven invari ant name a lready exi sts, then that entry is | |
22 | update d with the given typ e name, un less the g iven type name alrea dy | |
23 | matche s, in whic h case no action is taken. The 'entityFr amework' | |
24 | sectio n is added if it doe s not exis t. The con fig file i s automati cally | |
25 | saved if and onl y if a cha nge was ma de. | |
26 | ||
27 | This c ommand is typically used only by Entity Framework provider N uGet | |
28 | packag es and is run from t he 'instal l.ps1' scr ipt. | |
29 | ||
30 | .PARAMETER Project | |
31 | The Vi sual Studi o project to update. When runn ing in the NuGet ins tall.ps1 | |
32 | script the '$pro ject' vari able provi ded as par t of that script sho uld be | |
33 | used. | |
34 | ||
35 | .PARAMETER Invariant Name | |
36 | The pr ovider inv ariant nam e that uni quely iden tifies thi s provider . For | |
37 | exampl e, the Mic rosoft SQL Server pr ovider is registered with the invariant | |
38 | name ' System.Dat a.SqlClien t'. | |
39 | ||
40 | .PARAMETER TypeName | |
41 | The as sembly-qua lified typ e name of the provid er-specifi c type tha t | |
42 | inheri ts from 'S ystem.Data .Entity.Co re.Common. DbProvider Services'. For | |
43 | exampl e, for the Microsoft SQL Serve r provider , this typ e is | |
44 | 'Syste m.Data.Ent ity.SqlSer ver.SqlPro viderServi ces, Entit yFramework .SqlServer '. | |
45 | #> | |
46 | function A dd-EFProvi der | |
47 | { | |
48 | param ( | |
49 | [p arameter(P osition = 0, | |
50 | Mandator y = $true) ] | |
51 | $P roject, | |
52 | [p arameter(P osition = 1, | |
53 | Mandator y = $true) ] | |
54 | [s tring] $In variantNam e, | |
55 | [p arameter(P osition = 2, | |
56 | Mandator y = $true) ] | |
57 | [s tring] $Ty peName | |
58 | ) | |
59 | ||
60 | if (!(Check- Project $p roject)) | |
61 | { | |
62 | return | |
63 | } | |
64 | ||
65 | $runne r = New-EF ConfigRunn er $Projec t | |
66 | ||
67 | try | |
68 | { | |
69 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Conn ectionFact oryConfig. AddProvide rCommand @ ( $Invaria ntName, $T ypeName ) | |
70 | $e rror = Get -RunnerErr or $runner | |
71 | ||
72 | if ($error) | |
73 | { | |
74 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
75 | { | |
76 | Writ e-Host $er ror.StackT race | |
77 | } | |
78 | else | |
79 | { | |
80 | Writ e-Verbose $error.Sta ckTrace | |
81 | } | |
82 | ||
83 | throw $e rror.Messa ge | |
84 | } | |
85 | } | |
86 | finall y | |
87 | { | |
88 | Re move-Runne r $runner | |
89 | } | |
90 | } | |
91 | ||
92 | <# | |
93 | .SYNOPSIS | |
94 | Adds o r updates an Entity Framework default co nnection f actory in the | |
95 | projec t config f ile. | |
96 | ||
97 | .DESCRIPTI ON | |
98 | Adds a n entry in to the 'en tityFramew ork' secti on of the project co nfig | |
99 | file f or the con nection fa ctory that Entity Fr amework wi ll use by default | |
100 | when c reating ne w connecti ons by con vention. A ny existin g entry wi ll be | |
101 | overri dden if it does not match. The 'entityFr amework' s ection is added if | |
102 | it doe s not exis t. The con fig file i s automati cally save d if and o nly if | |
103 | a chan ge was mad e. | |
104 | ||
105 | This c ommand is typically used only by Entity Framework provider N uGet | |
106 | packag es and is run from t he 'instal l.ps1' scr ipt. | |
107 | ||
108 | .PARAMETER Project | |
109 | The Vi sual Studi o project to update. When runn ing in the NuGet ins tall.ps1 | |
110 | script the '$pro ject' vari able provi ded as par t of that script sho uld be | |
111 | used. | |
112 | ||
113 | .PARAMETER TypeName | |
114 | The as sembly-qua lified typ e name of the connec tion facto ry type th at | |
115 | implem ents the ' System.Dat a.Entity.I nfrastruct ure.IDbCon nectionFac tory' | |
116 | interf ace. For example, f or the Mic rosoft SQL Server Ex press prov ider | |
117 | connec tion facto ry, this t ype is | |
118 | 'Syste m.Data.Ent ity.Infras tructure.S qlConnecti onFactory, EntityFra mework'. | |
119 | ||
120 | .PARAMETER Construct orArgument s | |
121 | An opt ional arra y of strin gs that wi ll be pass ed as argu ments to t he | |
122 | connec tion facto ry type co nstructor. | |
123 | #> | |
124 | function A dd-EFDefau ltConnecti onFactory | |
125 | { | |
126 | param ( | |
127 | [p arameter(P osition = 0, | |
128 | Mandator y = $true) ] | |
129 | $P roject, | |
130 | [p arameter(P osition = 1, | |
131 | Mandator y = $true) ] | |
132 | [s tring] $Ty peName, | |
133 | [s tring[]] $ Constructo rArguments | |
134 | ) | |
135 | ||
136 | if (!(Check- Project $p roject)) | |
137 | { | |
138 | return | |
139 | } | |
140 | ||
141 | $runne r = New-EF ConfigRunn er $Projec t | |
142 | ||
143 | try | |
144 | { | |
145 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Conn ectionFact oryConfig. AddDefault Connection FactoryCom mand @( $T ypeName, $ Constructo rArguments ) | |
146 | $e rror = Get -RunnerErr or $runner | |
147 | ||
148 | if ($error) | |
149 | { | |
150 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
151 | { | |
152 | Writ e-Host $er ror.StackT race | |
153 | } | |
154 | else | |
155 | { | |
156 | Writ e-Verbose $error.Sta ckTrace | |
157 | } | |
158 | ||
159 | throw $e rror.Messa ge | |
160 | } | |
161 | } | |
162 | finall y | |
163 | { | |
164 | Re move-Runne r $runner | |
165 | } | |
166 | } | |
167 | ||
168 | <# | |
169 | .SYNOPSIS | |
170 | Initia lizes the Entity Fra mework sec tion in th e project config fil e | |
171 | and se ts default s. | |
172 | ||
173 | .DESCRIPTI ON | |
174 | Create s the 'ent ityFramewo rk' sectio n of the p roject con fig file a nd sets | |
175 | the de fault conn ection fac tory to us e SQL Expr ess if it is running on the | |
176 | machin e, or Loca lDb otherw ise. Note that insta lling a di fferent pr ovider | |
177 | may ch ange the d efault con nection fa ctory. Th e config f ile is | |
178 | automa tically sa ved if and only if a change wa s made. | |
179 | ||
180 | In add ition, any reference to 'Syste m.Data.Ent ity.dll' i n the proj ect is | |
181 | remove d. | |
182 | ||
183 | This c ommand is typically used only by Entity Framework provider N uGet | |
184 | packag es and is run from t he 'instal l.ps1' scr ipt. | |
185 | ||
186 | .PARAMETER Project | |
187 | The Vi sual Studi o project to update. When runn ing in the NuGet ins tall.ps1 | |
188 | script the '$pro ject' vari able provi ded as par t of that script sho uld be | |
189 | used. | |
190 | #> | |
191 | function I nitialize- EFConfigur ation | |
192 | { | |
193 | param ( | |
194 | [p arameter(P osition = 0, | |
195 | Mandator y = $true) ] | |
196 | $P roject | |
197 | ) | |
198 | ||
199 | if (!(Check- Project $p roject)) | |
200 | { | |
201 | return | |
202 | } | |
203 | ||
204 | $runne r = New-EF ConfigRunn er $Projec t | |
205 | ||
206 | try | |
207 | { | |
208 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Conn ectionFact oryConfig. Initialize EntityFram eworkComma nd | |
209 | $e rror = Get -RunnerErr or $runner | |
210 | ||
211 | if ($error) | |
212 | { | |
213 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
214 | { | |
215 | Writ e-Host $er ror.StackT race | |
216 | } | |
217 | else | |
218 | { | |
219 | Writ e-Verbose $error.Sta ckTrace | |
220 | } | |
221 | ||
222 | throw $e rror.Messa ge | |
223 | } | |
224 | } | |
225 | finall y | |
226 | { | |
227 | Re move-Runne r $runner | |
228 | } | |
229 | } | |
230 | ||
231 | <# | |
232 | .SYNOPSIS | |
233 | Enable s Code Fir st Migrati ons in a p roject. | |
234 | ||
235 | .DESCRIPTI ON | |
236 | Enable s Migratio ns by scaf folding a migrations configura tion class in the pr oject. If the | |
237 | target database was create d by an in itializer, an initia l migratio n will be created (u nless | |
238 | automa tic migrat ions are e nabled via the Enabl eAutomatic Migrations parameter ). | |
239 | ||
240 | .PARAMETER ContextTy peName | |
241 | Specif ies the co ntext to u se. If omi tted, migr ations wil l attempt to locate a | |
242 | single context t ype in the target pr oject. | |
243 | ||
244 | .PARAMETER EnableAut omaticMigr ations | |
245 | Specif ies whethe r automati c migratio ns will be enabled i n the scaf folded mig rations co nfiguratio n. | |
246 | If omi tted, auto matic migr ations wil l be disab led. | |
247 | ||
248 | .PARAMETER Migration sDirectory | |
249 | Specif ies the na me of the directory that will contain mi grations c ode files. | |
250 | If omi tted, the directory will be na med "Migra tions". | |
251 | ||
252 | .PARAMETER ProjectNa me | |
253 | Specif ies the pr oject that the scaff olded migr ations con figuration class wil l | |
254 | be add ed to. If omitted, t he default project s elected in package m anager | |
255 | consol e is used. | |
256 | ||
257 | .PARAMETER StartUpPr ojectName | |
258 | Specif ies the co nfiguratio n file to use for na med connec tion strin gs. If | |
259 | omitte d, the spe cified pro ject's con figuration file is u sed. | |
260 | ||
261 | .PARAMETER ContextPr ojectName | |
262 | Specif ies the pr oject whic h contains the DbCon text class to use. I f omitted, | |
263 | the co ntext is a ssumed to be in the same proje ct used fo r migratio ns. | |
264 | ||
265 | .PARAMETER Connectio nStringNam e | |
266 | Specif ies the na me of a co nnection s tring to u se from th e applicat ion's | |
267 | config uration fi le. | |
268 | ||
269 | .PARAMETER Connectio nString | |
270 | Specif ies the th e connecti on string to use. If omitted, the contex t's | |
271 | defaul t connecti on will be used. | |
272 | ||
273 | .PARAMETER Connectio nProviderN ame | |
274 | Specif ies the pr ovider inv ariant nam e of the c onnection string. | |
275 | ||
276 | .PARAMETER Force | |
277 | Specif ies that t he migrati ons config uration be overwritt en when ru nning more | |
278 | than o nce for a given proj ect. | |
279 | ||
280 | .PARAMETER ContextAs semblyName | |
281 | Specif ies the na me of the assembly w hich conta ins the Db Context cl ass to use . Use this | |
282 | parame ter instea d of Conte xtProjectN ame when t he context is contai ned in a r eferenced | |
283 | assemb ly rather than in a project of the solut ion. | |
284 | ||
285 | .PARAMETER AppDomain BaseDirect ory | |
286 | Specif ies the di rectory to use for t he app-dom ain that i s used for running M igrations | |
287 | code s uch that t he app-dom ain is abl e to find all requir ed assembl ies. This is an | |
288 | advanc ed option that shoul d only be needed if the soluti on contain s several projects | |
289 | such t hat the as semblies n eeded for the contex t and conf iguration are not al l | |
290 | refere nced from either the project c ontaining the contex t or the p roject con taining | |
291 | the mi grations. | |
292 | ||
293 | .EXAMPLE | |
294 | En able-Migra tions | |
295 | # Scaffold a migration s configur ation in a project w ith only o ne context | |
296 | ||
297 | .EXAMPLE | |
298 | En able-Migra tions -Aut o | |
299 | # Scaffold a migration s configur ation with automatic migration s enabled for a proj ect | |
300 | # with only one contex t | |
301 | ||
302 | .EXAMPLE | |
303 | En able-Migra tions -Con textTypeNa me MyConte xt -Migrat ionsDirect ory Direct oryName | |
304 | # Scaffold a migration s configur ation for a project with multi ple contex ts | |
305 | # This scaff olds a mig rations co nfiguratio n for MyCo ntext and will put t he configu ration | |
306 | # and subseq uent confi gurations in a new d irectory c alled "Dir ectoryName " | |
307 | ||
308 | #> | |
309 | function E nable-Migr ations | |
310 | { | |
311 | [Cmdle tBinding(D efaultPara meterSetNa me = 'Conn ectionStri ngName')] | |
312 | param ( | |
313 | [s tring] $Co ntextTypeN ame, | |
314 | [a lias('Auto ')] | |
315 | [s witch] $En ableAutoma ticMigrati ons, | |
316 | [s tring] $Mi grationsDi rectory, | |
317 | [s tring] $Pr ojectName, | |
318 | [s tring] $St artUpProje ctName, | |
319 | [s tring] $Co ntextProje ctName, | |
320 | [p arameter(P arameterSe tName = 'C onnectionS tringName' )] | |
321 | [s tring] $Co nnectionSt ringName, | |
322 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
323 | Mandator y = $true) ] | |
324 | [s tring] $Co nnectionSt ring, | |
325 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
326 | Mandator y = $true) ] | |
327 | [s tring] $Co nnectionPr oviderName , | |
328 | [s witch] $Fo rce, | |
329 | [s tring] $Co ntextAssem blyName, | |
330 | [str ing] $AppD omainBaseD irectory | |
331 | ) | |
332 | ||
333 | $runne r = New-Mi grationsRu nner $Proj ectName $S tartUpProj ectName $C ontextProj ectName $n ull $Conne ctionStrin gName $Con nectionStr ing $Conne ctionProvi derName $C ontextAsse mblyName $ AppDomainB aseDirecto ry | |
334 | ||
335 | try | |
336 | { | |
337 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Migr ations.Ena bleMigrati onsCommand @( $Enabl eAutomatic Migrations .IsPresent , $Force.I sPresent ) @{ 'Conte xtTypeName ' = $Conte xtTypeName ; 'Migrati onsDirecto ry' = $Mig rationsDir ectory } | |
338 | $e rror = Get -RunnerErr or $runner | |
339 | ||
340 | if ($error) | |
341 | { | |
342 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
343 | { | |
344 | Writ e-Host $er ror.StackT race | |
345 | } | |
346 | else | |
347 | { | |
348 | Writ e-Verbose $error.Sta ckTrace | |
349 | } | |
350 | ||
351 | throw $e rror.Messa ge | |
352 | } | |
353 | ||
354 | $( Get-VSComp onentModel ).GetServi ce([NuGetC onsole.IPo werConsole Window]).S how() | |
355 | } | |
356 | finall y | |
357 | { | |
358 | Re move-Runne r $runner | |
359 | } | |
360 | } | |
361 | ||
362 | <# | |
363 | .SYNOPSIS | |
364 | Scaffo lds a migr ation scri pt for any pending m odel chang es. | |
365 | ||
366 | .DESCRIPTI ON | |
367 | Scaffo lds a new migration script and adds it t o the proj ect. | |
368 | ||
369 | .PARAMETER Name | |
370 | Specif ies the na me of the custom scr ipt. | |
371 | ||
372 | .PARAMETER Force | |
373 | Specif ies that t he migrati on user co de be over written wh en re-scaf folding an | |
374 | existi ng migrati on. | |
375 | ||
376 | .PARAMETER ProjectNa me | |
377 | Specif ies the pr oject that contains the migrat ion config uration ty pe to be | |
378 | used. If omitted , the defa ult projec t selected in packag e manager console | |
379 | is use d. | |
380 | ||
381 | .PARAMETER StartUpPr ojectName | |
382 | Specif ies the co nfiguratio n file to use for na med connec tion strin gs. If | |
383 | omitte d, the spe cified pro ject's con figuration file is u sed. | |
384 | ||
385 | .PARAMETER Configura tionTypeNa me | |
386 | Specif ies the mi grations c onfigurati on to use. If omitte d, migrati ons will | |
387 | attemp t to locat e a single migration s configur ation type in the ta rget | |
388 | projec t. | |
389 | ||
390 | .PARAMETER Connectio nStringNam e | |
391 | Specif ies the na me of a co nnection s tring to u se from th e applicat ion's | |
392 | config uration fi le. | |
393 | ||
394 | .PARAMETER Connectio nString | |
395 | Specif ies the th e connecti on string to use. If omitted, the contex t's | |
396 | defaul t connecti on will be used. | |
397 | ||
398 | .PARAMETER Connectio nProviderN ame | |
399 | Specif ies the pr ovider inv ariant nam e of the c onnection string. | |
400 | ||
401 | .PARAMETER IgnoreCha nges | |
402 | Scaffo lds an emp ty migrati on ignorin g any pend ing change s detected in the cu rrent mode l. | |
403 | This c an be used to create an initia l, empty m igration t o enable M igrations for an exi sting | |
404 | databa se. N.B. D oing this assumes th at the tar get databa se schema is compati ble with t he | |
405 | curren t model. | |
406 | ||
407 | .PARAMETER AppDomain BaseDirect ory | |
408 | Specif ies the di rectory to use for t he app-dom ain that i s used for running M igrations | |
409 | code s uch that t he app-dom ain is abl e to find all requir ed assembl ies. This is an | |
410 | advanc ed option that shoul d only be needed if the soluti on contain s several projects | |
411 | such t hat the as semblies n eeded for the contex t and conf iguration are not al l | |
412 | refere nced from either the project c ontaining the contex t or the p roject con taining | |
413 | the mi grations. | |
414 | ||
415 | .EXAMPLE | |
416 | Ad d-Migratio n First | |
417 | # Scaffold a new migra tion named "First" | |
418 | ||
419 | .EXAMPLE | |
420 | Ad d-Migratio n First -I gnoreChang es | |
421 | # Scaffold a n empty mi gration ig noring any pending c hanges det ected in t he current model. | |
422 | # This can b e used to create an initial, e mpty migra tion to en able Migra tions for an existin g | |
423 | # database. N.B. Doing this assu mes that t he target database s chema is c ompatible with the | |
424 | # current mo del. | |
425 | ||
426 | #> | |
427 | function A dd-Migrati on | |
428 | { | |
429 | [Cmdle tBinding(D efaultPara meterSetNa me = 'Conn ectionStri ngName')] | |
430 | param ( | |
431 | [p arameter(P osition = 0, | |
432 | Mandator y = $true) ] | |
433 | [s tring] $Na me, | |
434 | [s witch] $Fo rce, | |
435 | [s tring] $Pr ojectName, | |
436 | [s tring] $St artUpProje ctName, | |
437 | [s tring] $Co nfiguratio nTypeName, | |
438 | [p arameter(P arameterSe tName = 'C onnectionS tringName' )] | |
439 | [s tring] $Co nnectionSt ringName, | |
440 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
441 | Mandator y = $true) ] | |
442 | [s tring] $Co nnectionSt ring, | |
443 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
444 | Mandator y = $true) ] | |
445 | [s tring] $Co nnectionPr oviderName , | |
446 | [s witch] $Ig noreChange s, | |
447 | [str ing] $AppD omainBaseD irectory) | |
448 | ||
449 | Hint-D owngrade $ MyInvocati on.MyComma nd | |
450 | $runne r = New-Mi grationsRu nner $Proj ectName $S tartUpProj ectName $n ull $Confi gurationTy peName $Co nnectionSt ringName $ Connection String $Co nnectionPr oviderName $null $Ap pDomainBas eDirectory | |
451 | ||
452 | try | |
453 | { | |
454 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Migr ations.Add MigrationC ommand @( $Name, $Fo rce.IsPres ent, $Igno reChanges. IsPresent ) | |
455 | $e rror = Get -RunnerErr or $runner | |
456 | ||
457 | if ($error) | |
458 | { | |
459 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
460 | { | |
461 | Writ e-Host $er ror.StackT race | |
462 | } | |
463 | else | |
464 | { | |
465 | Writ e-Verbose $error.Sta ckTrace | |
466 | } | |
467 | ||
468 | throw $e rror.Messa ge | |
469 | } | |
470 | $( Get-VSComp onentModel ).GetServi ce([NuGetC onsole.IPo werConsole Window]).S how() | |
471 | } | |
472 | finall y | |
473 | { | |
474 | Re move-Runne r $runner | |
475 | } | |
476 | } | |
477 | ||
478 | <# | |
479 | .SYNOPSIS | |
480 | Applie s any pend ing migrat ions to th e database . | |
481 | ||
482 | .DESCRIPTI ON | |
483 | Update s the data base to th e current model by a pplying pe nding migr ations. | |
484 | ||
485 | .PARAMETER SourceMig ration | |
486 | Only v alid with -Script. S pecifies t he name of a particu lar migrat ion to use | |
487 | as the update's starting p oint. If o mitted, th e last app lied migra tion in | |
488 | the da tabase wil l be used. | |
489 | ||
490 | .PARAMETER TargetMig ration | |
491 | Specif ies the na me of a pa rticular m igration t o update t he databas e to. If | |
492 | omitte d, the cur rent model will be u sed. | |
493 | ||
494 | .PARAMETER Script | |
495 | Genera te a SQL s cript rath er than ex ecuting th e pending changes di rectly. | |
496 | ||
497 | .PARAMETER Force | |
498 | Specif ies that d ata loss i s acceptab le during automatic migration of the | |
499 | databa se. | |
500 | ||
501 | .PARAMETER ProjectNa me | |
502 | Specif ies the pr oject that contains the migrat ion config uration ty pe to be | |
503 | used. If omitted , the defa ult projec t selected in packag e manager console | |
504 | is use d. | |
505 | ||
506 | .PARAMETER StartUpPr ojectName | |
507 | Specif ies the co nfiguratio n file to use for na med connec tion strin gs. If | |
508 | omitte d, the spe cified pro ject's con figuration file is u sed. | |
509 | ||
510 | .PARAMETER Configura tionTypeNa me | |
511 | Specif ies the mi grations c onfigurati on to use. If omitte d, migrati ons will | |
512 | attemp t to locat e a single migration s configur ation type in the ta rget | |
513 | projec t. | |
514 | ||
515 | .PARAMETER Connectio nStringNam e | |
516 | Specif ies the na me of a co nnection s tring to u se from th e applicat ion's | |
517 | config uration fi le. | |
518 | ||
519 | .PARAMETER Connectio nString | |
520 | Specif ies the th e connecti on string to use. If omitted, the contex t's | |
521 | defaul t connecti on will be used. | |
522 | ||
523 | .PARAMETER Connectio nProviderN ame | |
524 | Specif ies the pr ovider inv ariant nam e of the c onnection string. | |
525 | ||
526 | .PARAMETER AppDomain BaseDirect ory | |
527 | Specif ies the di rectory to use for t he app-dom ain that i s used for running M igrations | |
528 | code s uch that t he app-dom ain is abl e to find all requir ed assembl ies. This is an | |
529 | advanc ed option that shoul d only be needed if the soluti on contain s several projects | |
530 | such t hat the as semblies n eeded for the contex t and conf iguration are not al l | |
531 | refere nced from either the project c ontaining the contex t or the p roject con taining | |
532 | the mi grations. | |
533 | ||
534 | .EXAMPLE | |
535 | Up date-Datab ase | |
536 | # Update the database to the lat est migrat ion | |
537 | ||
538 | .EXAMPLE | |
539 | Up date-Datab ase -Targe tMigration Second | |
540 | # Update dat abase to a migration named "Se cond" | |
541 | # This will apply migr ations if the target hasn't be en applied or roll b ack migrat ions | |
542 | # if it has | |
543 | ||
544 | .EXAMPLE | |
545 | Up date-Datab ase -Scrip t | |
546 | # Generate a script to update th e database from it's current s tate to t he latest migration | |
547 | ||
548 | .EXAMPLE | |
549 | Up date-Datab ase -Scrip t -SourceM igration S econd -Tar getMigrati on First | |
550 | # Generate a script to migrate t he databas e from a s pecified s tart migra tion | |
551 | # named "Sec ond" to a specified target mig ration nam ed "First" | |
552 | ||
553 | .EXAMPLE | |
554 | Up date-Datab ase -Scrip t -SourceM igration $ InitialDat abase | |
555 | # Generate a script th at can upg rade a dat abase curr ently at a ny version to the la test versi on. | |
556 | # The genera ted script includes logic to c heck the _ _Migration sHistory t able and o nly apply changes | |
557 | # that haven 't been pr eviously a pplied. | |
558 | ||
559 | .EXAMPLE | |
560 | Up date-Datab ase -Targe tMigration $InitialD atabase | |
561 | # Runs the D own method to roll-b ack any mi grations t hat have b een applie d to the d atabase | |
562 | ||
563 | ||
564 | #> | |
565 | function U pdate-Data base | |
566 | { | |
567 | [Cmdle tBinding(D efaultPara meterSetNa me = 'Conn ectionStri ngName')] | |
568 | param ( | |
569 | [s tring] $So urceMigrat ion, | |
570 | [s tring] $Ta rgetMigrat ion, | |
571 | [s witch] $Sc ript, | |
572 | [s witch] $Fo rce, | |
573 | [s tring] $Pr ojectName, | |
574 | [s tring] $St artUpProje ctName, | |
575 | [s tring] $Co nfiguratio nTypeName, | |
576 | [p arameter(P arameterSe tName = 'C onnectionS tringName' )] | |
577 | [s tring] $Co nnectionSt ringName, | |
578 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
579 | Mandator y = $true) ] | |
580 | [s tring] $Co nnectionSt ring, | |
581 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
582 | Mandator y = $true) ] | |
583 | [s tring] $Co nnectionPr oviderName , | |
584 | [str ing] $AppD omainBaseD irectory) | |
585 | ||
586 | Hint-D owngrade $ MyInvocati on.MyComma nd | |
587 | $runne r = New-Mi grationsRu nner $Proj ectName $S tartUpProj ectName $n ull $Confi gurationTy peName $Co nnectionSt ringName $ Connection String $Co nnectionPr oviderName $null $Ap pDomainBas eDirectory | |
588 | ||
589 | try | |
590 | { | |
591 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Migr ations.Upd ateDatabas eCommand @ ( $SourceM igration, $TargetMig ration, $S cript.IsPr esent, $Fo rce.IsPres ent, $Verb ose.IsPres ent ) | |
592 | $e rror = Get -RunnerErr or $runner | |
593 | ||
594 | if ($error) | |
595 | { | |
596 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
597 | { | |
598 | Writ e-Host $er ror.StackT race | |
599 | } | |
600 | else | |
601 | { | |
602 | Writ e-Verbose $error.Sta ckTrace | |
603 | } | |
604 | ||
605 | throw $e rror.Messa ge | |
606 | } | |
607 | $( Get-VSComp onentModel ).GetServi ce([NuGetC onsole.IPo werConsole Window]).S how() | |
608 | } | |
609 | finall y | |
610 | { | |
611 | Re move-Runne r $runner | |
612 | } | |
613 | } | |
614 | ||
615 | <# | |
616 | .SYNOPSIS | |
617 | Displa ys the mig rations th at have be en applied to the ta rget datab ase. | |
618 | ||
619 | .DESCRIPTI ON | |
620 | Displa ys the mig rations th at have be en applied to the ta rget datab ase. | |
621 | ||
622 | .PARAMETER ProjectNa me | |
623 | Specif ies the pr oject that contains the migrat ion config uration ty pe to be | |
624 | used. If omitted , the defa ult projec t selected in packag e manager console | |
625 | is use d. | |
626 | ||
627 | .PARAMETER StartUpPr ojectName | |
628 | Specif ies the co nfiguratio n file to use for na med connec tion strin gs. If | |
629 | omitte d, the spe cified pro ject's con figuration file is u sed. | |
630 | ||
631 | .PARAMETER Configura tionTypeNa me | |
632 | Specif ies the mi grations c onfigurati on to use. If omitte d, migrati ons will | |
633 | attemp t to locat e a single migration s configur ation type in the ta rget | |
634 | projec t. | |
635 | ||
636 | .PARAMETER Connectio nStringNam e | |
637 | Specif ies the na me of a co nnection s tring to u se from th e applicat ion's | |
638 | config uration fi le. | |
639 | ||
640 | .PARAMETER Connectio nString | |
641 | Specif ies the th e connecti on string to use. If omitted, the contex t's | |
642 | defaul t connecti on will be used. | |
643 | ||
644 | .PARAMETER Connectio nProviderN ame | |
645 | Specif ies the pr ovider inv ariant nam e of the c onnection string. | |
646 | ||
647 | .PARAMETER AppDomain BaseDirect ory | |
648 | Specif ies the di rectory to use for t he app-dom ain that i s used for running M igrations | |
649 | code s uch that t he app-dom ain is abl e to find all requir ed assembl ies. This is an | |
650 | advanc ed option that shoul d only be needed if the soluti on contain s several projects | |
651 | such t hat the as semblies n eeded for the contex t and conf iguration are not al l | |
652 | refere nced from either the project c ontaining the contex t or the p roject con taining | |
653 | the mi grations. | |
654 | #> | |
655 | function G et-Migrati ons | |
656 | { | |
657 | [Cmdle tBinding(D efaultPara meterSetNa me = 'Conn ectionStri ngName')] | |
658 | param ( | |
659 | [s tring] $Pr ojectName, | |
660 | [s tring] $St artUpProje ctName, | |
661 | [s tring] $Co nfiguratio nTypeName, | |
662 | [p arameter(P arameterSe tName = 'C onnectionS tringName' )] | |
663 | [s tring] $Co nnectionSt ringName, | |
664 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
665 | Mandator y = $true) ] | |
666 | [s tring] $Co nnectionSt ring, | |
667 | [p arameter(P arameterSe tName = 'C onnectionS tringAndPr oviderName ', | |
668 | Mandator y = $true) ] | |
669 | [s tring] $Co nnectionPr oviderName , | |
670 | [str ing] $AppD omainBaseD irectory) | |
671 | ||
672 | $runne r = New-Mi grationsRu nner $Proj ectName $S tartUpProj ectName $n ull $Confi gurationTy peName $Co nnectionSt ringName $ Connection String $Co nnectionPr oviderName $null $Ap pDomainBas eDirectory | |
673 | ||
674 | try | |
675 | { | |
676 | In voke-Runne rCommand $ runner Sys tem.Data.E ntity.Migr ations.Get Migrations Command | |
677 | $e rror = Get -RunnerErr or $runner | |
678 | ||
679 | if ($error) | |
680 | { | |
681 | if ($kno wnExceptio ns -notcon tains $err or.TypeNam e) | |
682 | { | |
683 | Writ e-Host $er ror.StackT race | |
684 | } | |
685 | else | |
686 | { | |
687 | Writ e-Verbose $error.Sta ckTrace | |
688 | } | |
689 | ||
690 | throw $e rror.Messa ge | |
691 | } | |
692 | } | |
693 | finall y | |
694 | { | |
695 | Re move-Runne r $runner | |
696 | } | |
697 | } | |
698 | ||
699 | function N ew-Migrati onsRunner( $ProjectNa me, $Start UpProjectN ame, $Cont extProject Name, $Con figuration TypeName, $Connectio nStringNam e, $Connec tionString , $Connect ionProvide rName, $Co ntextAssem blyName, $ AppDomainB aseDirecto ry) | |
700 | { | |
701 | $start UpProject = Get-Migr ationsStar tUpProject $StartUpP rojectName $ProjectN ame | |
702 | Build- Project $s tartUpProj ect | |
703 | ||
704 | $proje ct = Get-M igrationsP roject $Pr ojectName | |
705 | Build- Project $p roject | |
706 | ||
707 | $conte xtProject = $project | |
708 | if ($C ontextProj ectName) | |
709 | { | |
710 | $c ontextProj ect = Get- SingleProj ect $Conte xtProjectN ame | |
711 | Bu ild-Projec t $context Project | |
712 | } | |
713 | ||
714 | $insta llPath = G et-EntityF rameworkIn stallPath $project | |
715 | $tools Path = Joi n-Path $in stallPath tools | |
716 | ||
717 | $info = New-AppD omainSetup $project $installPa th | |
718 | ||
719 | $domai n = [AppDo main]::Cre ateDomain( 'Migration s', $null, $info) | |
720 | $domai n.SetData( 'project', $project) | |
721 | $domai n.SetData( 'contextPr oject', $c ontextProj ect) | |
722 | $domai n.SetData( 'startUpPr oject', $s tartUpProj ect) | |
723 | $domai n.SetData( 'configura tionTypeNa me', $Conf igurationT ypeName) | |
724 | $domai n.SetData( 'connectio nStringNam e', $Conne ctionStrin gName) | |
725 | $domai n.SetData( 'connectio nString', $Connectio nString) | |
726 | $domai n.SetData( 'connectio nProviderN ame', $Con nectionPro viderName) | |
727 | $domai n.SetData( 'contextAs semblyName ', $Contex tAssemblyN ame) | |
728 | $domai n.SetData( 'appDomain BaseDirect ory', $App DomainBase Directory) | |
729 | ||
730 | $dispa tcher = Ne w-DomainDi spatcher $ toolsPath | |
731 | $domai n.SetData( 'efDispatc her', $dis patcher) | |
732 | ||
733 | return @{ | |
734 | Do main = $do main; | |
735 | To olsPath = $toolsPath | |
736 | } | |
737 | } | |
738 | ||
739 | function N ew-EFConfi gRunner($P roject) | |
740 | { | |
741 | $insta llPath = G et-EntityF rameworkIn stallPath $Project | |
742 | $tools Path = Joi n-Path $in stallPath tools | |
743 | $info = New-AppD omainSetup $Project $installPa th | |
744 | ||
745 | $domai n = [AppDo main]::Cre ateDomain( 'EFConfig' , $null, $ info) | |
746 | $domai n.SetData( 'project', $Project) | |
747 | ||
748 | $dispa tcher = Ne w-DomainDi spatcher $ toolsPath | |
749 | $domai n.SetData( 'efDispatc her', $dis patcher) | |
750 | ||
751 | return @{ | |
752 | Do main = $do main; | |
753 | To olsPath = $toolsPath | |
754 | } | |
755 | } | |
756 | ||
757 | function N ew-AppDoma inSetup($P roject, $I nstallPath ) | |
758 | { | |
759 | $info = New-Obje ct System. AppDomainS etup -Prop erty @{ | |
760 | ShadowCo pyFiles = 'true'; | |
761 | Applicat ionBase = $InstallPa th; | |
762 | PrivateB inPath = ' tools'; | |
763 | Configur ationFile = ([AppDom ain]::Curr entDomain. SetupInfor mation.Con figuration File) | |
764 | } | |
765 | ||
766 | $targe tFramework Version = (New-Objec t System.R untime.Ver sioning.Fr ameworkNam e ($Projec t.Properti es.Item('T argetFrame workMonike r').Value) ).Version | |
767 | ||
768 | if ($t argetFrame workVersio n -lt (New -Object Ve rsion @( 4 , 5 ))) | |
769 | { | |
770 | $i nfo.Privat eBinPath + = ';lib\ne t40' | |
771 | } | |
772 | else | |
773 | { | |
774 | $i nfo.Privat eBinPath + = ';lib\ne t45' | |
775 | } | |
776 | ||
777 | return $info | |
778 | } | |
779 | ||
780 | function N ew-DomainD ispatcher( $ToolsPath ) | |
781 | { | |
782 | $utili tyAssembly = [System .Reflectio n.Assembly ]::LoadFro m((Join-Pa th $ToolsP ath Entity Framework. PowerShell .Utility.d ll)) | |
783 | $dispa tcher = $u tilityAsse mbly.Creat eInstance( | |
784 | 'S ystem.Data .Entity.Mi grations.U tilities.D omainDispa tcher', | |
785 | $f alse, | |
786 | [S ystem.Refl ection.Bin dingFlags] ::Instance -bor [Sys tem.Reflec tion.Bindi ngFlags]:: Public, | |
787 | $n ull, | |
788 | $P SCmdlet, | |
789 | $n ull, | |
790 | $n ull) | |
791 | ||
792 | return $dispatch er | |
793 | } | |
794 | ||
795 | function R emove-Runn er($runner ) | |
796 | { | |
797 | [AppDo main]::Unl oad($runne r.Domain) | |
798 | } | |
799 | ||
800 | function I nvoke-Runn erCommand( $runner, $ command, $ parameters , $anonymo usArgument s) | |
801 | { | |
802 | $domai n = $runne r.Domain | |
803 | ||
804 | if ($a nonymousAr guments) | |
805 | { | |
806 | $a nonymousAr guments.Ge tEnumerato r() | %{ | |
807 | $domain. SetData($_ .Name, $_. Value) | |
808 | } | |
809 | } | |
810 | ||
811 | $domai n.CreateIn stanceFrom ( | |
812 | (J oin-Path $ runner.Too lsPath Ent ityFramewo rk.PowerSh ell.dll), | |
813 | $c ommand, | |
814 | $f alse, | |
815 | 0, | |
816 | $n ull, | |
817 | $p arameters, | |
818 | $n ull, | |
819 | $n ull) | Out -Null | |
820 | } | |
821 | ||
822 | function G et-RunnerE rror($runn er) | |
823 | { | |
824 | $domai n = $runne r.Domain | |
825 | ||
826 | if (!$ domain.Get Data('wasE rror')) | |
827 | { | |
828 | re turn $null | |
829 | } | |
830 | ||
831 | return @{ | |
832 | Message = $domain. GetData('e rror.Messa ge'); | |
833 | TypeName = $domain .GetData(' error.Type Name'); | |
834 | StackTra ce = $doma in.GetData ('error.St ackTrace') | |
835 | } | |
836 | } | |
837 | ||
838 | function G et-Migrati onsProject ($name, $h ideMessage ) | |
839 | { | |
840 | if ($n ame) | |
841 | { | |
842 | re turn Get-S ingleProje ct $name | |
843 | } | |
844 | ||
845 | $proje ct = Get-P roject | |
846 | $proje ctName = $ project.Na me | |
847 | ||
848 | if (!$ hideMessag e) | |
849 | { | |
850 | Wr ite-Verbos e "Using N uGet proje ct '$proje ctName'." | |
851 | } | |
852 | ||
853 | return $project | |
854 | } | |
855 | ||
856 | function G et-Migrati onsStartUp Project($n ame, $fall backName) | |
857 | { | |
858 | $start UpProject = $null | |
859 | ||
860 | if ($n ame) | |
861 | { | |
862 | $s tartUpProj ect = Get- SingleProj ect $name | |
863 | } | |
864 | else | |
865 | { | |
866 | $s tartupProj ectPaths = $DTE.Solu tion.Solut ionBuild.S tartupProj ects | |
867 | ||
868 | if ($startup ProjectPat hs) | |
869 | { | |
870 | if ($sta rtupProjec tPaths.Len gth -eq 1) | |
871 | { | |
872 | $sta rtupProjec tPath = $s tartupProj ectPaths[0 ] | |
873 | ||
874 | if ( !(Split-Pa th -IsAbso lute $star tupProject Path)) | |
875 | { | |
876 | $solutionP ath = Spli t-Path $DT E.Solution .Propertie s.Item('Pa th').Value | |
877 | $startupPr ojectPath = Join-Pat h $solutio nPath $sta rtupProjec tPath -Res olve | |
878 | } | |
879 | ||
880 | $sta rtupProjec t = Get-So lutionProj ects | ?{ | |
881 | try | |
882 | { | |
883 | $fullN ame = $_.F ullName | |
884 | } | |
885 | catch [Not Implemente dException ] | |
886 | { | |
887 | return $false | |
888 | } | |
889 | ||
890 | if ($fullN ame -and $ fullName.E ndsWith('\ ')) | |
891 | { | |
892 | $fullN ame = $ful lName.Subs tring(0, $ fullName.L ength - 1) | |
893 | } | |
894 | ||
895 | return $fu llName -eq $startupP rojectPath | |
896 | } | |
897 | } | |
898 | else | |
899 | { | |
900 | Writ e-Verbose 'More than one start -up projec t found.' | |
901 | } | |
902 | } | |
903 | el se | |
904 | { | |
905 | Write-Ve rbose 'No start-up p roject fou nd.' | |
906 | } | |
907 | } | |
908 | ||
909 | if (!( $startUpPr oject -and (Test-Sta rtUpProjec t $startUp Project))) | |
910 | { | |
911 | $s tartUpProj ect = Get- Migrations Project $f allbackNam e $true | |
912 | $s tartUpProj ectName = $startUpPr oject.Name | |
913 | ||
914 | Wr ite-Warnin g "Cannot determine a valid st art-up pro ject. Usin g project '$startUpP rojectName ' instead. Your conf iguration file and w orking dir ectory may not be se t as expec ted. Use t he -StartU pProjectNa me paramet er to set one explic itly. Use the -Verbo se switch for more i nformation ." | |
915 | } | |
916 | else | |
917 | { | |
918 | $s tartUpProj ectName = $startUpPr oject.Name | |
919 | ||
920 | Wr ite-Verbos e "Using S tartUp pro ject '$sta rtUpProjec tName'." | |
921 | } | |
922 | ||
923 | return $startUpP roject | |
924 | } | |
925 | ||
926 | function G et-Solutio nProjects( ) | |
927 | { | |
928 | $proje cts = New- Object Sys tem.Collec tions.Stac k | |
929 | ||
930 | $DTE.S olution.Pr ojects | % { | |
931 | $p rojects.Pu sh($_) | |
932 | } | |
933 | ||
934 | while ($projects .Count -ne 0) | |
935 | { | |
936 | $p roject = $ projects.P op(); | |
937 | ||
938 | # NOTE: This line is s imilar to doing a "y ield retur n" in C# | |
939 | $p roject | |
940 | ||
941 | if ($project .ProjectIt ems) | |
942 | { | |
943 | $project .ProjectIt ems | ?{ $ _.SubProje ct } | %{ | |
944 | $pro jects.Push ($_.SubPro ject) | |
945 | } | |
946 | } | |
947 | } | |
948 | } | |
949 | ||
950 | function G et-SingleP roject($na me) | |
951 | { | |
952 | $proje ct = Get-P roject $na me | |
953 | ||
954 | if ($p roject -is [array]) | |
955 | { | |
956 | th row "More than one p roject '$n ame' was f ound. Spec ify the fu ll name of the one t o use." | |
957 | } | |
958 | ||
959 | return $project | |
960 | } | |
961 | ||
962 | function T est-StartU pProject($ project) | |
963 | { | |
964 | if ($p roject.Kin d -eq '{cc 5fd16d-436 d-48ad-a40 c-5a424c6e 3e79}') | |
965 | { | |
966 | $p rojectName = $projec t.Name | |
967 | Wr ite-Verbos e "Cannot use start- up project '$project Name'. The Windows A zure Proje ct type is n't suppor ted." | |
968 | ||
969 | re turn $fals e | |
970 | } | |
971 | ||
972 | return $true | |
973 | } | |
974 | ||
975 | function B uild-Proje ct($projec t) | |
976 | { | |
977 | $confi guration = $DTE.Solu tion.Solut ionBuild.A ctiveConfi guration.N ame | |
978 | ||
979 | $DTE.S olution.So lutionBuil d.BuildPro ject($conf iguration, $project. UniqueName , $true) | |
980 | ||
981 | if ($D TE.Solutio n.Solution Build.Last BuildInfo) | |
982 | { | |
983 | $p rojectName = $projec t.Name | |
984 | ||
985 | th row "The p roject '$p rojectName ' failed t o build." | |
986 | } | |
987 | } | |
988 | ||
989 | function G et-EntityF rameworkIn stallPath( $project) | |
990 | { | |
991 | $packa ge = Get-P ackage -Pr ojectName $project.F ullName | ?{ $_.Id - eq 'Entity Framework' } | |
992 | ||
993 | if (!$ package) | |
994 | { | |
995 | $p rojectName = $projec t.Name | |
996 | ||
997 | th row "The E ntityFrame work packa ge is not installed on project '$project Name'." | |
998 | } | |
999 | ||
1000 | return Get-Packa geInstallP ath $packa ge | |
1001 | } | |
1002 | ||
1003 | function G et-Package InstallPat h($package ) | |
1004 | { | |
1005 | $compo nentModel = Get-VsCo mponentMod el | |
1006 | $packa geInstalle rServices = $compone ntModel.Ge tService([ NuGet.Visu alStudio.I VsPackageI nstallerSe rvices]) | |
1007 | ||
1008 | $vsPac kage = $pa ckageInsta llerServic es.GetInst alledPacka ges() | ?{ $_.Id -eq $package. Id -and $_ .Version - eq $packag e.Version } | |
1009 | ||
1010 | return $vsPackag e.InstallP ath | |
1011 | } | |
1012 | ||
1013 | function C heck-Proje ct($projec t) | |
1014 | { | |
1015 | if (!$ project.Fu llName) | |
1016 | { | |
1017 | th row "The P roject arg ument must refer to a Visual S tudio proj ect. Use t he '`$proj ect' varia ble provid ed by NuGe t when run ning in in stall.ps1. " | |
1018 | } | |
1019 | ||
1020 | re turn $proj ect.CodeMo del | |
1021 | } | |
1022 | ||
1023 | function H int-Downgr ade ($name ) { | |
1024 | if (Ge t-Module | Where { $ _.Name -eq 'EntityFr ameworkCor e' }) { | |
1025 | Wr ite-Warnin g "Both En tity Frame work 6.x a nd Entity Framework Core comma nds are in stalled. T he Entity Framework 6 version is executi ng. You ca n fully qu alify the command to select wh ich one to execute, 'EntityFra mework\$na me' for EF 6.x and 'E ntityFrame workCore\$ name' for EF Core." | |
1026 | } | |
1027 | } | |
1028 | ||
1029 | Export-Mod uleMember @( 'Enable -Migration s', 'Add-M igration', 'Update-D atabase', 'Get-Migra tions', 'A dd-EFProvi der', 'Add -EFDefault Connection Factory', 'Initializ e-EFConfig uration') -Variable InitialDat abase | |
1030 | ||
1031 | # SIG # Be gin signat ure block | |
1032 | # MIIa3gYJ KoZIhvcNAQ cCoIIazzCC GssCAQExCz AJBgUrDgMC GgUAMGkGCi sGAQQB | |
1033 | # gjcCAQSg WzBZMDQGCi sGAQQBgjcC AR4wJgIDAQ AABBAfzDtg WUsITrck0s YpfvNR | |
1034 | # AgEAAgEA AgEAAgEAAg EAMCEwCQYF Kw4DAhoFAA QUMst5oGNh RFW5FyGr05 jAUKeC | |
1035 | # HF6gghWA MIIEwjCCA6 qgAwIBAgIT MwAAAL+RbP t8GiTgIgAA AAAAvzANBg kqhkiG | |
1036 | # 9w0BAQUF ADB3MQswCQ YDVQQGEwJV UzETMBEGA1 UECBMKV2Fz aGluZ3Rvbj EQMA4G | |
1037 | # A1UEBxMH UmVkbW9uZD EeMBwGA1UE ChMVTWljcm 9zb2Z0IENv cnBvcmF0aW 9uMSEw | |
1038 | # HwYDVQQD ExhNaWNyb3 NvZnQgVGlt ZS1TdGFtcC BQQ0EwHhcN MTYwOTA3MT c1ODQ5 | |
1039 | # WhcNMTgw OTA3MTc1OD Q5WjCBsjEL MAkGA1UEBh MCVVMxEzAR BgNVBAgTCl dhc2hp | |
1040 | # bmd0b24x EDAOBgNVBA cTB1JlZG1v bmQxHjAcBg NVBAoTFU1p Y3Jvc29mdC BDb3Jw | |
1041 | # b3JhdGlv bjEMMAoGA1 UECxMDQU9D MScwJQYDVQ QLEx5uQ2lw aGVyIERTRS BFU046 | |
1042 | # NTdDOC0y RDE1LTFDOE IxJTAjBgNV BAMTHE1pY3 Jvc29mdCBU aW1lLVN0YW 1wIFNl | |
1043 | # cnZpY2Uw ggEiMA0GCS qGSIb3DQEB AQUAA4IBDw AwggEKAoIB AQCt7X+GwP aidVcV | |
1044 | # TRT2yohV /L1dpTMCvf 4DHlCY0GUm hEzD4Yn22q /qnqZTHDd8 IlI/OHvKhW C9ksKE | |
1045 | # F+BgBHtU QPSg7s6+ZX y69qX64r6m 7X/NYizeK3 1DsScLsDHn qsbnwJaNZ2 C2u5hh | |
1046 | # cKsHvc8B aSsv/nKlr6 +eg2iX2y9a i1uB1ySNeu nEtdfchAr1 U6Qb7AJHrX MTdKl8 | |
1047 | # ptLov67a FU0rRRMwQJ OWHR+o/gQa 9v4z/f43RY 2PnMRoF7Dz tn6ditoQ9C gTiMdS | |
1048 | # MtsqFWMA QNMt5bZ8oY 1hmgkSDN6F wTjVyUEE6t 3KJtgX2hMH jOVqtHXQlu d0GR3Z | |
1049 | # LtAOMbS7 AgMBAAGjgg EJMIIBBTAd BgNVHQ4EFg QU5GwaORrH k1i0RjZlB8 QAt3kX | |
1050 | # nBEwHwYD VR0jBBgwFo AUIzT42VJG cArtQPt2+7 MrsMM1sw8w VAYDVR0fBE 0wSzBJ | |
1051 | # oEegRYZD aHR0cDovL2 NybC5taWNy b3NvZnQuY2 9tL3BraS9j cmwvcHJvZH VjdHMv | |
1052 | # TWljcm9z b2Z0VGltZV N0YW1wUENB LmNybDBYBg grBgEFBQcB AQRMMEowSA YIKwYB | |
1053 | # BQUHMAKG PGh0dHA6Ly 93d3cubWlj cm9zb2Z0Lm NvbS9wa2kv Y2VydHMvTW ljcm9z | |
1054 | # b2Z0VGlt ZVN0YW1wUE NBLmNydDAT BgNVHSUEDD AKBggrBgEF BQ
|
|
1055 | # 9w0BAQUF AAOCAQEAjt 62jcZ+2YBq m7RKit827D RU9OKioi6H EERT0X0bL+ JjUTu3 | |
1056 | # 7k4piPcK 3J/0cfktWu PjrYSuySa/ NbkmlvAhQV 4VpoWxipx3 cZplF9HK9I H4t8AD | |
1057 | # YDxUI5u1 xb2r24aExG IzWY+1uH92 bzTKbAjuwN zTMQ1z10Kc a4XXPI4HFZ alXxgL | |
1058 | # fbjCkV3I KNspU1TILV 0Dzk0tdKAw x/MoeZN1HF cB9WjzbpFn CVH+Oy/Nye JOyiNE | |
1059 | # 4uT/6iyH z1+XCqf2nI rV/DXXsJYK wifVlOvSJ4 ZrV40MYucq 3lWQuKERfX ivLFXl | |
1060 | # dKyXQrS4 eeToRPSevR isc0GBYuZc zpkdeN5faD CCBOswggPT oAMCAQICEz MAAAF4 | |
1061 | # JVq1zSPG X5UAAQAAAX gwDQYJKoZI hvcNAQEFBQ AweTELMAkG A1UEBhMCVV MxEzAR | |
1062 | # BgNVBAgT Cldhc2hpbm d0b24xEDAO BgNVBAcTB1 JlZG1vbmQx HjAcBgNVBA oTFU1p | |
1063 | # Y3Jvc29m dCBDb3Jwb3 JhdGlvbjEj MCEGA1UEAx MaTWljcm9z b2Z0IENvZG UgU2ln | |
1064 | # bmluZyBQ Q0EwHhcNMT cwODExMjAx MTE1WhcNMT gwODExMjAx MTE1WjCBgj ELMAkG | |
1065 | # A1UEBhMC VVMxEzARBg NVBAgTCldh c2hpbmd0b2 4xEDAOBgNV BAcTB1JlZG 1vbmQx | |
1066 | # HjAcBgNV BAoTFU1pY3 Jvc29mdCBD b3Jwb3JhdG lvbjEMMAoG A1UECxMDQU 9DMR4w | |
1067 | # HAYDVQQD ExVNaWNyb3 NvZnQgQ29y cG9yYXRpb2 4wggEiMA0G CSqGSIb3DQ EBAQUA | |
1068 | # A4IBDwAw ggEKAoIBAQ CZbh1TVaud srIbXUPPB9 c8S+E+dKSb skHKYlG6SG TH8jhT | |
1069 | # hpuvGiAO 87F2b9GHVN +DvszaMkGy /xQgHaGEJL fpnb3kpaki c7E0bjDHdG 4KnHRb | |
1070 | # no/wfUkG LfS79o+cw/ /RY8Ck6yE+ 0czDBcxp0G bw5JyGP+KF qvzRR/3Tv3 nt/5x0 | |
1071 | # 5ZnEOHYP +eDVikDvn/ DH+oxxtiCf X3tkvtm/yX 4eOb47YdmY KQjCgz2+Ni l/lupY | |
1072 | # vU0QFIjv ke3jshqQIN Dng/vO9ys2 qA0ex/q5hl LKQTST99dG oM86Ge6F72 3ReToq | |
1073 | # KnGLN8ki CG7uNapOAI QrpCHZq96C VumiaA5Zvx U9AgMBAAGj ggFgMIIBXD ATBgNV | |
1074 | # HSUEDDAK BggrBgEFBQ cDAzAdBgNV HQ4EFgQUju htD3FD7tk/ RKloJFX05c pgLjcw | |
1075 | # UQYDVR0R BEowSKRGME QxDDAKBgNV BAsTA0FPQz E0MDIGA1UE BRMrMjI5OD AzKzFh | |
1076 | # YmY5ZTVm LWNlZDAtND JlNi1hNjVk LWQ5MzUwOT U5ZmUwZTAf BgNVHSMEGD AWgBTL | |
1077 | # EejK0rQW WAHJNy4zFh a5TJoKHzBW BgNVHR8ETz BNMEugSaBH hkVodHRwOi 8vY3Js | |
1078 | # Lm1pY3Jv c29mdC5jb2 0vcGtpL2Ny bC9wcm9kdW N0cy9NaWND b2RTaWdQQ0 FfMDgt | |
1079 | # MzEtMjAx MC5jcmwwWg YIKwYBBQUH AQEETjBMME oGCCsGAQUF BzAChj5odH RwOi8v | |
1080 | # d3d3Lm1p Y3Jvc29mdC 5jb20vcGtp L2NlcnRzL0 1pY0NvZFNp Z1BDQV8wOC 0zMS0y | |
1081 | # MDEwLmNy dDANBgkqhk iG9w0BAQUF AAOCAQEAYn G/oHG/xgZY R8NAMHZ/vE 9GM0e4 | |
1082 | # 7YdhuTea 2uY7pSGwM7 07wp8Wan0F a6evK1PWfc d/XNOh2BpE v5o8RmKDoE sG0ECP | |
1083 | # 13Jug7ck lfKreBVHQ+ Djg43VVFLZ puo7aOAVK6 wjlcnpPUtn +SfH9K0aM2 FjDKVJ | |
1084 | # FW6XFKXB at5R+Zp6uO xWTxpSeMTe DC5zF6IY6o gR1uzU+9EQ oRlAvkwX6p o+exEL | |
1085 | # nMLr4++P +fqOxIU+PO DIoB8ijClA qwwKvLlMPa 3qlrNHt+Lw eTMu7lvGC/ RA18wU | |
1086 | # zzXAeomu Z03blUw+bk OiVgWOk4S0 RN7EnW7zjJ V8gd/+G2db ToUi1cB/fT CCBbww | |
1087 | # ggOkoAMC AQICCmEzJh oAAAAAADEw DQYJKoZIhv cNAQEFBQAw XzETMBEGCg mSJomT | |
1088 | # 8ixkARkW A2NvbTEZMB cGCgmSJomT 8ixkARkWCW 1pY3Jvc29m dDEtMCsGA1 UEAxMk | |
1089 | # TWljcm9z b2Z0IFJvb3 QgQ2VydGlm aWNhdGUgQX V0aG9yaXR5 MB4XDTEwMD gzMTIy | |
1090 | # MTkzMloX DTIwMDgzMT IyMjkzMlow eTELMAkGA1 UEBhMCVVMx EzARBgNVBA gTCldh | |
1091 | # c2hpbmd0 b24xEDAOBg NVBAcTB1Jl ZG1vbmQxHj AcBgNVBAoT FU1pY3Jvc2 9mdCBD | |
1092 | # b3Jwb3Jh dGlvbjEjMC EGA1UEAxMa TWljcm9zb2 Z0IENvZGUg U2lnbmluZy BQQ0Ew | |
1093 | # ggEiMA0G CSqGSIb3DQ EBAQUAA4IB DwAwggEKAo IBAQCycllc GTBkvx2aYC AgQpl2 | |
1094 | # U2w+G9Zv zMvx6mv+lx YQ4N86dIMa ty+gMuz/3s JCTiPVcgDb NVcKicquIE n08Gis | |
1095 | # TUuNpb15 S3GbRwfa/S XfnXWIz6pz RH/Xgdvzvf I2pMlcRdyv rT3gKGiXGq elcnNW | |
1096 | # 8ReU5P01 lHKg1nZfHn dFg4U4FtBz WwW6Z1KNpb JpL9oZC/6S dCnidi9U3R QwWfjS | |
1097 | # jWL9y8lf RjFQuScT5E Awz3IpECgi xzdOPaAyPZ DNoTgGhVxO VoIoKgUyt0 vXT2Pn | |
1098 | # 0i1i8UU9 56wIAPZGoZ 7RW4wmU+h6 qkryRs83PD ietHdcpRee jcsRj1Y8wa wJXwPT | |
1099 | # AgMBAAGj ggFeMIIBWj APBgNVHRMB Af8EBTADAQ H/MB0GA1Ud DgQWBBTLEe jK0rQW | |
1100 | # WAHJNy4z Fha5TJoKHz ALBgNVHQ8E BAMCAYYwEg YJKwYBBAGC NxUBBAUCAw EAATAj | |
1101 | # BgkrBgEE AYI3FQIEFg QU/dExTtMm ipXhmGA7qD Fvpjy82C0w GQYJKwYBBA GCNxQC | |
1102 | # BAweCgBT AHUAYgBDAE EwHwYDVR0j BBgwFoAUDq yCYEBWJ5fl JRP8KuEKU5 VZ5KQw | |
1103 | # UAYDVR0f BEkwRzBFoE OgQYY/aHR0 cDovL2NybC 5taWNyb3Nv ZnQuY29tL3 BraS9j | |
1104 | # cmwvcHJv ZHVjdHMvbW ljcm9zb2Z0 cm9vdGNlcn QuY3JsMFQG CCsGAQUFBw EBBEgw | |
1105 | # RjBEBggr BgEFBQcwAo Y4aHR0cDov L3d3dy5taW Nyb3NvZnQu Y29tL3BraS 9jZXJ0 | |
1106 | # cy9NaWNy b3NvZnRSb2 90Q2VydC5j cnQwDQYJKo ZIhvcNAQEF BQADggIBAF k5Pn8m | |
1107 | # Rq/rb0Cx MrVq6w4vbq hJ9+tfde1M Oy3XQ60L/s vpLTGjI8x8 UJiAIV2sPS 9MuqKo | |
1108 | # VpzjcLu4 tPh5tUly9z 7qQX/K4QwX aculnCAt+g tQxFbNLeNK 0rxw56gNog OlVuC4 | |
1109 | # iktX8pVC nPHz7+7jhh 80PLhWmvBT I4UqpIIck+ KUBx3y4k74 jKHK6BOlkU 7IG9KP | |
1110 | # cpUqcW2b Gvgc8FPWZ8 wi/1wdzaKM vSeyeWNWRK JRzfnpo1hW 3ZsCRUQvX/ TartSC | |
1111 | # Mm78pJUT 5Otp56miLL 7IKxAOZY6Z 2/Wi+hImCW U4lPF6H0q7 0eFW6NB4lh hcyTUW | |
1112 | # X92THUmO Lb6tNEQc7h AVGgBd3TVb Ic6YxwnuhQ 6MT20OE049 fClInHLR82 zKwexw | |
1113 | # o1eSV32U jaAbSANa98 +jZwp0pTbt LS8XyOZyNx L0b7E8Z4L5 UrKNMxZlHg 6K3RDe | |
1114 | # ZPRvzkbU 0xfpecQEtN P7LN8fip6s CvsTJ0Ct5P nhqX9Guwdg R2VgQE6wQu xO7bN2 | |
1115 | # edgKNAlt HIAxH+IOVN 3lofvlRxCt ZJj/UBYufL 8FIXrilUEn acOTj5XJjd ibIa4N | |
1116 | # XJzwoq6G aIMMai27dm sAHZat8hZ7 9haDJLmIz2 qoRzEvmtzj cT3XAH5iR9 HOiMm4 | |
1117 | # GPoOco3B oz2vAkBq/2 mbluIQqBC0 N1AI1sM9MI IGBzCCA++g AwIBAgIKYR ZoNAAA | |
1118 | # AAAAHDAN BgkqhkiG9w 0BAQUFADBf MRMwEQYKCZ ImiZPyLGQB GRYDY29tMR kwFwYK | |
1119 | # CZImiZPy LGQBGRYJbW ljcm9zb2Z0 MS0wKwYDVQ QDEyRNaWNy b3NvZnQgUm 9vdCBD | |
1120 | # ZXJ0aWZp Y2F0ZSBBdX Rob3JpdHkw HhcNMDcwND AzMTI1MzA5 WhcNMjEwND AzMTMw | |
1121 | # MzA5WjB3 MQswCQYDVQ QGEwJVUzET MBEGA1UECB MKV2FzaGlu Z3RvbjEQMA 4GA1UE | |
1122 | # BxMHUmVk bW9uZDEeMB wGA1UEChMV TWljcm9zb2 Z0IENvcnBv cmF0aW9uMS EwHwYD | |
1123 | # VQQDExhN aWNyb3NvZn QgVGltZS1T dGFtcCBQQ0 EwggEiMA0G CSqGSIb3DQ EBAQUA | |
1124 | # A4IBDwAw ggEKAoIBAQ CfoWyx39tI kip8ay4Z4b 3i48WZUSNQ rc7dGE4kD+ 7Rp9FM | |
1125 | # rXQwIBHr B9VUlRVJlB tCkq6YXDAm 2gBr6Hu97I kHD/cOBJjw icwfyzMkh5 3y9Gcc | |
1126 | # LPx754gd 6udOo6HBI1 PKjfpFzwnQ Xq/QsEIEov mmbJNn1yjc RlOwhtDlKE YuJ6yG | |
1127 | # T1VSDOQD LPtqkJAwbo fzWTCd+n7W l7PoIZd++N IT8wi3U21S tEWQn0gASk dmEScp | |
1128 | # ZqiX5NMG gUqi+YSnEU cUCYKfhO1V eP4Bmh1QCI UAEDBG7bfe I0a7xC1Un6 8eeEEx | |
1129 | # d8yb3zuD k6FhArUdDb H895uyAc4i S1T/+QXDwi ALAgMBAAGj ggGrMIIBpz APBgNV | |
1130 | # HRMBAf8E BTADAQH/MB 0GA1UdDgQW BBQjNPjZUk ZwCu1A+3b7 syuwwzWzDz ALBgNV | |
1131 | # HQ8EBAMC AYYwEAYJKw YBBAGCNxUB BAMCAQAwgZ gGA1UdIwSB kDCBjYAUDq yCYEBW | |
1132 | # J5flJRP8 KuEKU5VZ5K ShY6RhMF8x EzARBgoJki aJk/IsZAEZ FgNjb20xGT AXBgoJ | |
1133 | # kiaJk/Is ZAEZFgltaW Nyb3NvZnQx LTArBgNVBA MTJE1pY3Jv c29mdCBSb2 90IENl | |
1134 | # cnRpZmlj YXRlIEF1dG hvcml0eYIQ ea0WoUqgpa 1Mc1j0BxMu ZTBQBgNVHR 8ESTBH | |
1135 | # MEWgQ6BB hj9odHRwOi 8vY3JsLm1p Y3Jvc29mdC 5jb20vcGtp L2NybC9wcm 9kdWN0 | |
1136 | # cy9taWNy b3NvZnRyb2 90Y2VydC5j cmwwVAYIKw YBBQUHAQEE SDBGMEQGCC sGAQUF | |
1137 | # BzAChjho dHRwOi8vd3 d3Lm1pY3Jv c29mdC5jb2 0vcGtpL2Nl cnRzL01pY3 Jvc29m | |
1138 | # dFJvb3RD ZXJ0LmNydD ATBgNVHSUE DDAKBggrBg EFBQ
|
|
1139 | # AAOCAgEA EJeKw1wDRD bd6bStd9vO eVFNAbEudH FbbQwTq86+ e4+4LtQSoo xtYrhX | |
1140 | # AstOIBNQ md16QOJXu6 9YmhzhHQGG rLt48ovQ7D sB7uK+jwoF yI1I4vBTFd 1Pq5Lk | |
1141 | # 541q1YDB 5pTyBi+FA+ mRKiQicPv2 /OR4mS4N9w ficLwYTp2O awpylbihOZ xnLcVR | |
1142 | # DupiXD8W mIsgP+IHGj L5zDFKdjE9 K3ILyOpwPf +FChPfwgph jvDXuBfrTo t/xTUr | |
1143 | # XqO/67x9 C0J71FNyIe 4wyrt4ZVxb ARcKFA7S2h SY9Ty5Zliz LS/n+YWGzF FW6J1w | |
1144 | # lGysOUzU 9nm/qhh6Yi nvopspNAZ3 GmLJPR5tH4 LwC8csu89D s+X57H2146 SodDW4 | |
1145 | # TsVxIxIm dgs8UoxxWk ZDFLyzs7BN Z8ifQv+AeS GAnhUwZuhC El4ayJ4iId BD6Svp | |
1146 | # u/RIzCzU 2DKATCYqSC RfWupW76be mZ3KOm+9gS d0BhHudiG/ m4LBJ1S2sW o9iaF2 | |
1147 | # YbRuoROm v6pH8BJv/Y oybLL+31HI jCPJZr2dHY cSZAI9La9Z j7jkIeW1sM pjtHhU | |
1148 | # BdRBLlCs lLCleKuzoJ Z1GtmShxN1 Ii8yqAhuoF uMJb+g74TK IdbrHk/Jmu 5J4PcB | |
1149 | # ZW+JC33I acjmbuqnl8 4xKf8OxVtc 2E0bodj6L5 4/LlUWa8kT o/0xggTIMI IExAIB | |
1150 | # ATCBkDB5 MQswCQYDVQ QGEwJVUzET MBEGA1UECB MKV2FzaGlu Z3RvbjEQMA 4GA1UE | |
1151 | # BxMHUmVk bW9uZDEeMB wGA1UEChMV TWljcm9zb2 Z0IENvcnBv cmF0aW9uMS MwIQYD | |
1152 | # VQQDExpN aWNyb3NvZn QgQ29kZSBT aWduaW5nIF BDQQITMwAA AXglWrXNI8 ZflQAB | |
1153 | # AAABeDAJ BgUrDgMCGg UAoIHhMBkG CSqGSIb3DQ EJAzEMBgor BgEEAYI3Ag EEMBwG | |
1154 | # CisGAQQB gjcCAQsxDj AMBgorBgEE AYI3AgEVMC MGCSqGSIb3 DQEJBDEWBB Tlz9AL | |
1155 | # f1sBglUb 85Teir2bIY mVvDCBgAYK KwYBBAGCNw IBDDFyMHCg UoBQAEUAbg B0AGkA | |
1156 | # dAB5ACAA RgByAGEAbQ BlAHcAbwBy AGsAIABUAG 8AbwBsAHMA IABmAG8Acg AgAFYA | |
1157 | # aQBzAHUA YQBsACAAUw B0AHUAZABp AG+hGoAYaH R0cDovL21z ZG4uY29tL2 RhdGEv | |
1158 | # ZWYgMA0G CSqGSIb3DQ EBAQUABIIB AGeaKWq3Th dTiw0FniJG aIvelS5Bgh hhNI3x | |
1159 | # ezUDCIPf p6Glc9zffE Pt3qMdZORj Y3mgsbrRO7 hXNm9GR5cb 68G5C7/Lhr Wfp34J | |
1160 | # yWQ1dbnA pNi6bp64SE ML52vcDVMM HnbKRM3ns0 /y/qu/XH2G SUUPuEjD7c d5t0NO | |
1161 | # DUQZ2gHt 4JeqZERgvN QWTxdUn83V 2BwOz1i6Kt HzmGdvEjb8 ZrPQTlu1Uo HHYXsQ | |
1162 | # jUv8dhEH kaj3o2jLEI hYXp1ait0/ OAk9dA5QdP VCBHy4RkDL WI4v58s0j1 J0Cw0l | |
1163 | # 2a/7+Agm 1vvVLQZHof llOSIgd5Aj 4Y1NiMYpLo 8Y4z3iBRXg UQKhggIoMI ICJAYJ | |
1164 | # KoZIhvcN AQkGMYICFT CCAhECAQEw gY4wdzELMA kGA1UEBhMC VVMxEzARBg NVBAgT | |
1165 | # Cldhc2hp bmd0b24xED AOBgNVBAcT B1JlZG1vbm QxHjAcBgNV BAoTFU1pY3 Jvc29m | |
1166 | # dCBDb3Jw b3JhdGlvbj EhMB8GA1UE AxMYTWljcm 9zb2Z0IFRp bWUtU3RhbX AgUENB | |
1167 | # AhMzAAAA v5Fs+3waJO AiAAAAAAC/ MAkGBSsOAw IaBQCgXTAY BgkqhkiG9w 0BCQMx | |
1168 | # CwYJKoZI hvcNAQcBMB wGCSqGSIb3 DQEJBTEPFw 0xNzEwMjMy MDEzNDhaMC MGCSqG | |
1169 | # SIb3DQEJ BDEWBBTDiJ Z8a7P4Som1 wzlUt7g8Oi C3qzANBgkq hkiG9w0BAQ UFAASC | |
1170 | # AQAmJlbq 0GKEk6SUOq A4Ksyj99KU lnPFcFyf1A qvHRdShmQj fEEo/pmR9c WmGNdA | |
1171 | # 8M7wVFFZ FRlmkF3oCl //ckniUJ/a DYtXCTskDF d2Tc8xJ/ns JOespt0LSp biadxI | |
1172 | # Goa9nZNX ymAEidosoh 0MmqB25gQf q9X+mMU7rV Up9eBUjAco T3FHv+gkzE 1XjvDE | |
1173 | # YFGvQ1PR xjiYKlQKIT DhtFhog2MS uGtvWpFV1a eqXDrANONl LyrscHrzKj QkKiwU | |
1174 | # PPJQ+iyg ds9A3xUri6 Jevj7Yjvr0 hBTFaxL7xm QtgaafY/Tq AtRcbCz2Gu 9hkUay | |
1175 | # WYGdtIZc 7fAdNGkxqR xddvkD | |
1176 | # SIG # En d signatur e block |
Araxis Merge (but not the data content of this report) is Copyright © 1993-2016 Araxis Ltd (www.araxis.com). All rights reserved.