1<!DOCTYPE html> 2<html lang="en" > 3<head> 4 <!-- general !--> 5 <meta charset="utf-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> 7 8 <!-- seo !--> 9 <title>Audit in Entity Framework Plus (EF Plus)</title> 10 <meta name="description" content="Learn Audit using EntityFramework Plus by documentation & example"> 11 12 <!-- webmaster tools --> 13 <meta name="google-site-verification" content="hN3QQVLO394NeK89wLRoXYuVZx0nm8BGmxNOreAkQCA" /> 14 <meta name="msvalidate.01" content="89359D9C492A475C0061398008D105FB" /> 15 <meta name="yandex-verification" content="0fd740725f1f3a8b" /> 16 <meta name="baidu-site-verification" content="MHCDFpNDHo" /> 17 18 19 20 <!-- icon !--> 21 <link rel="icon" type="image/png" href="/images/logo.png"> 22 23 <!-- css !--> 24 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N" crossorigin="anonymous"> 25 26 27 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.5.0/css/all.css" integrity="sha384-B4dIYHKNBt8Bc12p+WXckhzcICo0wtJAoU8YZTY5qE0Id1GSseTk6S+L3BlXeVIU" crossorigin="anonymous"> 28 <link rel="stylesheet" type="text/css" href="/assets/css/master.min.css?v=1.0.0.28062"> 29 30 31</head> 32 <body class="body-ef-core-audit"> 33 34 35<header class="site-header fixed-top"> 36 <div class="nav-site"> 37 <nav class="container-fluid navbar navbar-light navbar-expand-lg d-flex justify-content-between"> 38 39 <!-- brand --> 40 <a class="navbar-brand" href="/"> 41 <img src="/images/logo54x54.png" width="54" height="54" alt="zzz projects"> 42 43 <span class="hidden-lg-down"> 44 Entity Framework 45 <span class="text-z">Plus</span> 46 </span> 47 48 <span class="hidden-xl-up">EF</span> 49 <span class="text-z hidden-xl-up">Plus</span> 50 </a> 51 52 <!-- toggle --> 53 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#nav-site-menu" 54 aria-controls="nav-site-menu" aria-expanded="false" aria-label="Toggle navigation"> 55 <span class="navbar-toggler-icon"> 56 <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
57 viewBox="0 0 24 24" fill="currentColor"> 58 <path d="M3 6h18v2H3V6zm0 5h18v2H3v-2zm0 5h18v2H3v-2z"/> 59 </svg> 60 </span> 61 </button> 62 63 <div id="context-menu" class="d-flex justify-content-center"> 64 65 66 <div class="dropdown"> 67 <button class="dropdown-toggle" type="button" id="dropdown-doc" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 68 EF Core Docs 69 </button> 70 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> 71 72 <a class="nav-link" active href="/ef-core-batch-delete">Documentation</a> 73 <a class="nav-link" active href="https://github.com/zzzprojects/EntityFramework-Plus/releases">Release Notes</a> 74 75 </div> 76 </div> 77 <div class="dropdown"> 78 <button class="dropdown-toggle" type="button" id="dropdown-doc" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 79 EF6 Docs 80 </button> 81 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton"> 82 83 <a class="nav-link" active href="/batch-delete">Documentation</a> 84 <a class="nav-link" active href="https://github.com/zzzprojects/EntityFramework-Plus/releases">Release Notes</a> 85 86 </div> 87 </div> 88 <a class="nav-link active" href="/online-examples">Online Examples</a> 89 90 91 </div> 92 93 <!-- right --> 94 <div class="navbar-collapse collapse justify-content-end align-self-stretch align-items-center" id="nav-site-menu"> 95 96 <div class="hidden-lg-up"> 97 <!-- todo: will need another logic for prime --> 98 99 100<ul class="navbar-nav"> 101 <li class="nav-item active"> 102 <a class="nav-link" href="/ef-core-batch-delete">Documentation</a> 103 </li> 104 <li class="nav-item active"> 105 <a class="nav-link" href="https://github.com/zzzprojects/EntityFramework-Plus/releases">Release Notes</a> 106 </li> 107 <li class="nav-item active"> 108 <a class="nav-link" href="/batch-delete">Documentation</a> 109 </li> 110 <li class="nav-item active"> 111 <a class="nav-link" href="https://github.com/zzzprojects/EntityFramework-Plus/releases">Release Notes</a> 112 </li> 113 <li class="nav-item active"> 114 <a class="nav-link" href="/online-examples">Online Examples</a> 115 </li> 116</ul> 117 118 119 120 </div> 121 <ul class="navbar-nav prime free align-items-stretch align-self-stretch"> 122 <li class="nav-item nav-item-download d-flex"> 123 <a class="unique-btn align-self-center d-flex align-items-center" role="button" href="/download"> 124 <i class="fas fa-cloud-download-alt"></i> 125 Download 126 <i class="fa fa-angle-right"></i> 127 </a> 128 </li> 129 </ul> 130 131 132 </div> 133 134 </nav> 135 </div> 136 137</header> 138 139 140 141 142 <main id="main-container-z"> 143 <div class="side-body container-doc page-ef-core-audit"> 144 <div> 145 <nav id="nav-context-mobile" class="container-fluid navbar navbar-light navbar-expand-lg hidden-lg-up"> 146 <div class="nav-brand"></div> 147 <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#nav-sidebar" aria-controls="nav-sidebar" 148 aria-expanded="false" aria-label="Toggle navigation"> 149 <span class="navbar-toggler-icon"></span> 150 </button> 151 152 <div class="navbar-collapse collapse justify-content-end" id="nav-sidebar"> 153 <ul class="navbar-nav"> 154 155 156<div class="sidebar-menu"> 157 <div class="card-body menu-fixed2"> 158 159 160<ul id="accordion_723823047" class="nav flex-column"> 161 <li class="nav-item" >
162 <span class="ul-toggler " data-toggle="collapse" href="#accordion_-313564692" role="button" aria-expanded="true"> 163 <span class="ul-toggler-text"> 164Querying </span> 165 <i class="fas fa-angle-right"></i> 166 <i class="fas fa-angle-down"></i> 167 </span> 168 169 <div id="accordion_-313564692" class="collapse show"> 170 171 172<ul id="accordion_428164501" class="nav flex-column"> 173 <li class="nav-item" > 174 <a class="nav-link " href="/ef-core-query-cache"> 175 Query Cache 176 </a> 177 178 </li> 179 <li class="nav-item" > 180 <a class="nav-link " href="/ef-core-query-deferred"> 181 Query Deferred 182 </a> 183 184 </li> 185 <li class="nav-item" > 186 <a class="nav-link " href="/ef-core-query-filter"> 187 Query Filter 188 </a> 189 190 </li> 191 <li class="nav-item" > 192 <a class="nav-link " href="/ef-core-query-future"> 193 Query Future 194 </a> 195 196 </li> 197 <li class="nav-item" > 198 <a class="nav-link " href="/ef-core-query-hint"> 199 Query Hint 200 </a> 201 202 </li> 203 <li class="nav-item" > 204 <a class="nav-link " href="/ef-core-query-include-filter"> 205 Query IncludeFilter 206 </a> 207 208 </li> 209 <li class="nav-item" > 210 <a class="nav-link " href="/ef-core-query-include-optimized"> 211 Query IncludeOptimized 212 </a> 213 214 </li> 215 <li class="nav-item" > 216 <a class="nav-link " href="/where-contains"> 217 Where Contains 218 </a> 219 220 </li> 221</ul> 222 223 224 </div> 225 </li> 226 <li class="nav-item" > 227 <span class="ul-toggler " data-toggle="collapse" href="#accordion_-909981357" role="button" aria-expanded="true"> 228 <span class="ul-toggler-text"> 229Saving </span> 230 <i class="fas fa-angle-right"></i> 231 <i class="fas fa-angle-down"></i> 232 </span> 233 234 <div id="accordion_-909981357" class="collapse show"> 235 236 237<ul id="accordion_1622262876" class="nav flex-column"> 238 <li class="nav-item" > 239 <a class="nav-link " href="/execute-delete"> 240 Execute Delete 241 </a> 242 243 </li> 244 <li class="nav-item" > 245 <a class="nav-link " href="/execute-update"> 246 Execute Update 247 </a> 248 249 </li> 250 <li class="nav-item" > 251 <a class="nav-link " href="/update-partial">
252 Update Partial 253 </a> 254 255 </li> 256 <li class="nav-item" > 257 <a class="nav-link " href="/ef-core-batch-delete"> 258 Batch Delete 259 </a> 260 261 </li> 262 <li class="nav-item" > 263 <a class="nav-link " href="/ef-core-batch-update"> 264 Batch Update 265 </a> 266 267 </li> 268</ul> 269 270 271 </div> 272 </li> 273 <li class="nav-item" > 274 <span class="ul-toggler " data-toggle="collapse" href="#accordion_-362552343" role="button" aria-expanded="true"> 275 <span class="ul-toggler-text"> 276Utilities </span> 277 <i class="fas fa-angle-right"></i> 278 <i class="fas fa-angle-down"></i> 279 </span> 280 281 <div id="accordion_-362552343" class="collapse show"> 282 283 284<ul id="accordion_-1126022350" class="nav flex-column"> 285 <li class="nav-item" > 286 <a class="nav-link " href="/future-action"> 287 Future Action 288 </a> 289 290 </li> 291 <li class="nav-item" > 292 <a class="nav-link " href="/interceptors"> 293 Interceptors 294 </a> 295 296 </li> 297 <li class="nav-item" > 298 <a class="nav-link " href="/get-tag-with-values"> 299 GetTagsWithValues 300 </a> 301 302 </li> 303 <li class="nav-item" > 304 <a class="nav-link active" href="/ef-core-audit"> 305 Audit 306 </a> 307 308 </li> 309 <li class="nav-item" > 310 <a class="nav-link " href="/ef-core-linq-dynamic"> 311 LINQ Dynamic 312 </a> 313 314 </li> 315 <li class="nav-item" > 316 <a class="nav-link " href="/ef-core-sync-properties-from-database-values"> 317 Sync Properties 318 </a> 319 320 </li> 321</ul> 322 323 324 </div> 325 </li> 326 <li class="nav-item" > 327 <span class="ul-toggler " data-toggle="collapse" href="#accordion_-4001651" role="button" aria-expanded="true"> 328 <span class="ul-toggler-text"> 329Enterprise Features </span> 330 <i class="fas fa-angle-right"></i> 331 <i class="fas fa-angle-down"></i> 332 </span> 333 334 <div id="accordion_-4001651" class="collapse show"> 335 336 337<ul id="accordion_-673784136" class="nav flex-column"> 338 <li class="nav-item" > 339 <a class="nav-link " href="/ef-core-bulk-methods"> 340 Bulk Methods 341 </a> 342 343 </li> 344</ul> 345 346 347 </div> 348 </li> 349</ul> 350 351 352 </div> 353 354 355</div> 356 357 </ul> 358 </div> 359 </nav> 360 </div> 361 <div> 362 <div class="container-fluid"> 363 364 <div class="row"> 365 <div class="col-lg-3 col-xl-2 section-nav hidden-md-down "> 366 367 368<div class="sidebar-menu"> 369 <div class="card-body menu-fixed2"> 370 371 372<ul id="accordion_-1663182589" class="nav flex-column"> 373 <li class="nav-item" > 374 <span class="ul-toggler " data-toggle="collapse" href="#accordion_817908120" role="button" aria-expanded="true"> 375 <span class="ul-toggler-text"> 376Querying </span> 377 <i class="fas fa-angle-right"></i> 378 <i class="fas fa-angle-down"></i> 379 </span> 380 381 <div id="accordion_817908120" class="collapse show"> 382 383 384<ul id="accordion_-314571787" class="nav flex-column"> 385 <li class="nav-item" > 386 <a class="nav-link " href="/ef-core-query-cache"> 387 Query Cache 388 </a> 389 390 </li> 391 <li class="nav-item" > 392 <a class="nav-link " href="/ef-core-query-deferred"> 393 Query Deferred 394 </a> 395 396 </li> 397 <li class="nav-item" > 398 <a class="nav-link " href="/ef-core-query-filter"> 399 Query Filter 400 </a> 401 402 </li> 403 <li class="nav-item" > 404 <a class="nav-link " href="/ef-core-query-future"> 405 Query Future 406 </a> 407 408 </li> 409 <li class="nav-item" > 410 <a class="nav-link " href="/ef-core-query-hint"> 411 Query Hint 412 </a> 413 414 </li> 415 <li class="nav-item" > 416 <a class="nav-link " href="/ef-core-query-include-filter"> 417 Query IncludeFilter 418 </a> 419 420 </li> 421 <li class="nav-item" > 422 <a class="nav-link " href="/ef-core-query-include-optimized"> 423 Query IncludeOptimized 424 </a> 425 426 </li> 427 <li class="nav-item" > 428 <a class="nav-link " href="/where-contains"> 429 Where Contains 430 </a> 431 432 </li> 433</ul> 434 435 436 </div> 437 </li> 438 <li class="nav-item" >
439 <span class="ul-toggler " data-toggle="collapse" href="#accordion_1740391675" role="button" aria-expanded="true"> 440 <span class="ul-toggler-text"> 441Saving </span> 442 <i class="fas fa-angle-right"></i> 443 <i class="fas fa-angle-down"></i> 444 </span> 445 446 <div id="accordion_1740391675" class="collapse show"> 447 448 449<ul id="accordion_-1825273879" class="nav flex-column"> 450 <li class="nav-item" > 451 <a class="nav-link " href="/execute-delete"> 452 Execute Delete 453 </a> 454 455 </li> 456 <li class="nav-item" > 457 <a class="nav-link " href="/execute-update"> 458 Execute Update 459 </a> 460 461 </li> 462 <li class="nav-item" > 463 <a class="nav-link " href="/update-partial"> 464 Update Parti
464al 465 </a> 466 467 </li> 468 <li class="nav-item" > 469 <a class="nav-link " href="/ef-core-batch-delete"> 470 Batch Delete 471 </a> 472 473 </li> 474 <li class="nav-item" > 475 <a class="nav-link " href="/ef-core-batch-update"> 476 Batch Update 477 </a> 478 479 </li> 480</ul> 481 482 483 </div> 484 </li> 485 <li class="nav-item" > 486 <span class="ul-toggler " data-toggle="collapse" href="#accordion_-143234893" role="button" aria-expanded="true"> 487 <span class="ul-toggler-text"> 488Utilities </span> 489 <i class="fas fa-angle-right"></i> 490 <i class="fas fa-angle-down"></i> 491 </span> 492 493 <div id="accordion_-143234893" class="collapse show"> 494 495 496<ul id="accordion_-811382833" class="nav flex-column"> 497 <li class="nav-item" > 498 <a class="nav-link " href="/future-action"> 499 Future Action 500 </a> 501 502 </li> 503 <li class="nav-item" > 504 <a class="nav-link " href="/interceptors"> 505 Interceptors 506 </a> 507 508 </li> 509 <li class="nav-item" > 510 <a class="nav-link " href="/get-tag-with-values"> 511 GetTagsWithValues 512 </a> 513 514 </li> 515 <li class="nav-item" > 516 <a class="nav-link active" href="/ef-core-audit"> 517 Audit 518 </a> 519 520 </li> 521 <li class="nav-item" > 522 <a class="nav-link " href="/ef-core-linq-dynamic"> 523 LINQ Dynamic 524 </a> 525 526 </li> 527 <li class="nav-item" > 528 <a class="nav-link " href="/ef-core-sync-properties-from-database-values"> 529 Sync Properties 530 </a> 531 532 </li> 533</ul> 534 535 536 </div> 537 </li> 538 <li class="nav-item" > 539 <span class="ul-toggler " data-toggle="collapse" href="#accordion_-1710613870" role="button" aria-expanded="true"> 540 <span class="ul-toggler-text"> 541Enterprise Features </span> 542 <i class="fas fa-angle-right"></i> 543 <i class="fas fa-angle-down"></i> 544 </span> 545 546 <div id="accordion_-1710613870" class="collapse show"> 547 548 549<ul id="accordion_1129555977" class="nav flex-column"> 550 <li class="nav-item" > 551 <a class="nav-link " href="/ef-core-bulk-methods"> 552 Bulk Methods 553 </a> 554 555 </li> 556</ul> 557 558 559 </div> 560 </li> 561</ul> 562 563 564 </div> 565 566 567</div> 568 569 </div> 570 <div class="col-lg-9 col-xl-8"> 571 <div class="row justify-content-center"> 572 573 <div class="col-12"> 574 <div class="section-main"> 575<div class="page-header-calltoaction container-fluid"> 576 577 <div class="main-content"> 578 <h4> 579 <a href="https://entityframework-extensions.net/" target="_blank" rel="nofollow"> 580 Fastest Entity Framework Extensions <i class="fa fa-angle-right" aria-hidden="true"></i> 581 </a> 582 </h4> 583 <div class="mt-2"> 584 <a href="https://entityframework-extensions.net/bulk-insert" target="_blank" rel="nofollow"> 585 <i class="fas fa-plus-circle"></i> 586 Bulk Insert <i class="fa fa-angle-right" aria-hidden="true"></i> 587 </a> 588 </div> 589 <div class="ml-3 mr-3 mt-2"> 590 <a href="https://entityframework-extensions.net/bulk-delete" target="_blank" rel="nofollow"> 591 <i class="fas fa-minus-circle"></i> 592 Bulk Delete <i class="fa fa-angle-right" aria-hidden="true"></i> 593 </a> 594 </div> 595 <div class="mt-2"> 596 <a href="https://entityframework-extensions.net/bulk-update" target="_blank" rel="nofollow"> 597 <i class="fas fa-sync-alt"></i> 598 Bulk Update <i class="fa fa-angle-right" aria-hidden="true"></i> 599 </a> 600 </div> 601 <div class="ml-3 mr-3 mt-2"> 602 <a href="https://entityframework-extensions.net/bulk-merge" target="_blank" rel="nofollow"> 603 <i class="fas fa-code-branch"></i> 604 Bulk Merge <i class="fa fa-angle-right" aria-hidden="true"></i> 605 </a> 606 </div> 607 </div> 608</div> 609 <div> 610</div>
611<h1 id="audit"><span>Entity Framework Core Plus </span>Audit</h1> 612<h2 id="description">Description</h2> 613<p>Entity Framework Core saves entities in a database but doesn't let you easily track changes, for example, a history of all modifications and their author in an audit table.</p> 614<p><strong>EF+ Audit</strong> easily tracks changes, excludes/includes entities or properties, and automatically saves audit entries in the database.</p> 615<div class="code-charp"><div class="csharp"><pre> 616<span class="comment">// using Z.EntityFramework.Plus; // Don't forget to include this.</span> 617 618<span class="keyword">var</span> ctx = <span class="keyword">new</span> EntityContext(); 619<span class="comment">// ... ctx changes ...</span> 620 621<span class="keyword">var</span> audit = <span class="keyword">new</span> Audit(); 622audit.CreatedBy = <span class="string">"ZZZ Projects"</span>; <span class="comment">// Optional</span> 623ctx.SaveChanges(audit); 624 625<span class="comment">// Access to all auditing information</span> 626<span class="keyword">var</span> entries = audit.Entries; 627<span class="keyword">foreach</span>(<span class="keyword">var</span> entry <span class="keyword">in</span> entries) 628{ 629 <span class="keyword">foreach</span>(<span class="keyword">var</span> property <span class="keyword">in</span> entry.Properties) 630 { 631 } 632} 633</pre></div></div> 634<p><a href="https://dotnetfiddle.net/dc7v3W">Try it</a></p> 635<h2 id="scenarios">Scenarios</h2> 636<ul> 637<li><a href="ef-core-audit-autosave">AutoSave</a></li> 638<li><a href="ef-core-data-annotations">Data Annotations</a></li> 639<li><a href="ef-core-audit-exclude-include-entity">Exclude & Include Entity</a></li> 640<li><a href="ef-core-audit-exclude-include-property">Exclude & Include Property</a></li> 641<li><a href="ef-core-audit-format-value">Format Value</a></li> 642<li><a href="ef-core-audit-ignore-events">Ignore Events</a></li> 643<li><a href="ef-core-audit-property-unchanged">Property Unchanged</a></li> 644<li><a href="ef-core-audit-soft-add-soft-delete">Soft Add & Soft Delete</a></li> 645<li><a href="ef-core-audit-retrieve-audit-entries-for-specific-item">Retrieve AuditEntries for specific item</a></li> 646<li><a href="ef-core-audit-customization">Audit Customization</a></li> 647<li><a href="ef-core-audit-ef-extensions">Audit + Entity Framework Extensions</a></li> 648</ul> 649<h2 id="limitations">Limitations</h2> 650<ul> 651<li><strong>DO NOT</strong> support relationships</li> 652<li><strong>DO NOT</strong> populate EntitySetName value</li> 653</ul> 654<h2 id="troubleshooting">Troubleshooting</h2> 655<p>Why only my key is added when updating my entity?</p> 656<p>This issue often happens for MVC users. They create a new entity through HttpPost values and force the state to "Modified", the context is not aware of the original value and use the current value instead. So, every property has the original value == current value and our auditing only logs the key since all other values are equal.</p> 657<p>We recommend setting <strong>IgnorePropertyUnchanged</strong> to false to log every property.</p> 658<p>Here is an example of this issue: <a href="https://github.com/zzzprojects/EntityFramework-Plus/issues/8">Issues #8</a></p> 659<h2 id="conclusion">Conclusion</h2> 660<p><strong>Auditing</strong> in Entity Framework Core could not be simpler, there are always some entities in an application where an audit table can be crucial to keep track of what's happening, and you now have access to an easy to use library for these situations.</p> 661<p>Need help getting started? <a href="mailto:[email protected]">[email protected]</a></p> 662<p>We welcome all comments, ideas and suggestions to improve our library.</p> 663<div> 664</div> 665<br/> 666<div> 667</div> 668<div> <br /> 669 <hr /> 670 <br /> 671 <div class="box-chatgpt"> 672 <form action="https://zzzcode.ai/answer-question" method="get" target="_blank"> 673 <h2 class="display-4">Got any EF Plus Question?</h2> 674 <br> 675 <input name="p1" type="hidden" value="Entity Framework Plus"> 676 <div class="form-group"> 677 <label for="uiP2">Ask any EF Plus Questions and <a href="https://zzzcode.ai/answer-question" target="_blank">Get Instant Answers from ChatGPT AI</a>:</label> 678 <textarea id="uiP2" name="p2" type="text" class="form-control" placeholder="How to..." rows="5"></textarea> 679 </div> 680 <div> 681 <button type="submit" class="btn btn-primary my-1">
681ChatGPT answer me!</button> 682 </div> 683 </form> 684 </div> 685</div> 686 687 <br/> 688 689 </div> 690 </div> 691 692 693 </div> 694 695 </div> 696 <div class="col-lg-2 col-xl-2 section-aside hidden-md-down"> 697 <div class="section-aside-inner" style="padding-right: 10px;"> 698 699 700 701<ul class="navbar-nav"> 702</ul> 703 704 <br /> 705 <div class="card card-box"> 706 <div class="card-header">Prime Library</div> 707 <div class="card-body"> 708 <h3>Performance</h3> 709 <ul class="list-unstyled"> 710 <li><a href="https://entityframework-extensions.net/" target="_blank" rel="nofollow">Entity Framework Extensions</a></li> 711 <li><a href="https://dapper-plus.net/" target="_blank" rel="nofollow">Dapper Plus</a></li> 712 </ul> 713 <h3>Expression Evaluator</h3> 714 <ul class="list-unstyled"> 715 <li><a href="https://eval-expression.net/" target="_blank" rel="nofollow">C# Eval Expression</a></li> 716 </ul> 717 <a href="https://zzzprojects.com/" target="_blank" rel="nofollow">More Projects...</a> 718 </div> 719 </div> 720 721 <h3>Code AI</h3> 722 <ul> 723 <li><a href="https://zzzcode.ai/" target="_blank">ZZZ Code AI</a></li> 724 </ul> 725 <h3>Related</h3> 726 <ul> 727 728 <li><a href="https://entityframework-extensions.net/bulk-extensions" target="_blank" rel="nofollow">Entity Framework Extensions</a></li> 729 <li><a href="https://entityframework-extensions.net/contest" target="_blank" rel="nofollow">WIN an EF Extensions license</a></li> 730 731 </ul> 732 733 734<style> 735 .test-aside h3 { 736 font-size: 20px; 737 margin-top: 8px; 738 margin-bottom: 0; 739 } 740 741 .test-aside .card-body { 742 padding: 10px; 743 } 744 745 .test-aside ul { 746 margin: 0; 747 } 748 749</style> 750 751 </div> 752 </div> 753 754 </div> 755 </div> 756 </div> 757 </div> 758 </main> 759 760 761 762<div id="scroll-to-top"> 763 <i class="fa fa-angle-up" aria-hidden="true"></i> 764</div> 765<div id="site-footer-popup-newsletter" style="width: 18rem; display: none;"> 766 <div class="box"> 767 <div class="box-close"><i class="fas fa-times" onclick="closePopupNewsletter()"></i></div> 768 <div class="box-media"><i class="fas fa-envelope-open-text fa-3x"></i></div> 769 <div class="box-body">Get monthly updates by subscribing to our newsletter!</div> 770 <div class="box-action"><a href="https://mailchi.mp/zzzprojects/entity-framework-extensions-newsletter" target="_blank" class="btn-only stroked">SUBSCRIBE!</a></div> 771 </div> 772</div> 773 774 775 776
776<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
776 777
777<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct" crossorigin="anonymous"></script>
777 778 779 780 781 782 783 784 785
785<script src="js/_master.js?v=1.0.0.28062"></script>
785 786 787 788 789 790 791
791<script> 792 window.addEventListener("load", function(){ 793 window.cookieconsent.initialise({ 794 "palette": { 795 "popup": { 796 "background": "rgba(0, 0, 0, 0.7)", 797 "text": "#fff" 798 }, 799 "button": { 800 "background": "#000000" 801 } 802 }, 803 "theme": "edgeless" 804 })}); 805 </script>
805 806 807 </body> 808</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.