PageSourceSearch

https://entityframework-plus.net/ef-core-audit

html entityframework-plus.net collected 2026-10-02 11:56:39 UTC 30,662 bytes, 808 lines download raw bytes

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 &amp; 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                &nbsp;&nbsp;Download&nbsp;&nbsp;
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&#39;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">&quot;ZZZ Projects&quot;</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 &amp; Include Entity</a></li>
640<li><a href="ef-core-audit-exclude-include-property">Exclude &amp; 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 &amp; 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 &quot;Modified&quot;, 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.