最終更新 11 months ago

emildr revised this gist 11 months ago. Go to revision

1 file changed, 3 insertions, 3 deletions

insta_pr_decline.md

@@ -17,7 +17,7 @@ foreach (var id in itemIds)
17 17 Correct:
18 18 ```C#
19 19 var items = await _context.Items.Where(x => itemIds.Contains(x.Id)).AsAsyncEnumerable();
20 - foreach (var item in items)
20 + await foreach (var item in items)
21 21 {
22 22 // Logic
23 23 }
@@ -31,7 +31,7 @@ If you don't know if you need it, you need it.
31 31 Incorrect
32 32 ```C#
33 33 var items = await _context.Items.Where(x => itemIds.Contains(x.Id)).AsAsyncEnumerable();
34 - foreach (var item in items)
34 + await foreach (var item in items)
35 35 {
36 36 // Logic
37 37 }
@@ -45,7 +45,7 @@ await using var transaction = await context.Database.BeginTransactionAsync();
45 45 try
46 46 {
47 47 var items = await _context.Items.Where(x => itemIds.Contains(x.Id)).AsAsyncEnumerable();
48 - foreach (var item in items)
48 + await foreach (var item in items)
49 49 {
50 50 // Logic
51 51 }

emildr revised this gist 11 months ago. Go to revision

1 file changed, 2 insertions, 2 deletions

insta_pr_decline.md

@@ -71,7 +71,7 @@ await _context.Users
71 71 .Include(u => u.Events)
72 72 .Include(u => u.Installations)
73 73 .ThenInclude(i => i.Meters)
74 - .ToListAsync();
74 + .AsAsyncEnumerable();
75 75 ```
76 76
77 77 Correct:
@@ -82,7 +82,7 @@ await _context.Users
82 82 .Include(u => u.Installations)
83 83 .ThenInclude(i => i.Meters)
84 84 .AsSplitQuery()
85 - .ToListAsync();
85 + .AsAsyncEnumerable();
86 86 ```
87 87
88 88 ## Todos without issues

emildr revised this gist 11 months ago. Go to revision

1 file changed, 4 insertions, 1 deletion

insta_pr_decline.md

@@ -104,4 +104,7 @@ var theThing = getTheThing(); // TODO: Do the right thing! (#8383)
104 104
105 105 ## Big/frequent queries without indexes
106 106
107 - If you are executing a query a lot. It must have an index.
107 + If you are executing a query a lot. It must have an index.
108 +
109 + ## Compiler warnings
110 + No further explanation needed.

emildr revised this gist 11 months ago. Go to revision

1 file changed, 3 insertions

insta_pr_decline.md

@@ -99,6 +99,9 @@ Correct
99 99 var theThing = getTheThing(); // TODO: Do the right thing! (#8383)
100 100 ```
101 101
102 + ## Not using async/await in EF Core
103 + [EF core does not support parallel queries on the same context instance](https://learn.microsoft.com/en-us/ef/core/miscellaneous/async)
104 +
102 105 ## Big/frequent queries without indexes
103 106
104 107 If you are executing a query a lot. It must have an index.

emildr revised this gist 11 months ago. Go to revision

1 file changed, 1 insertion, 1 deletion

insta_pr_decline.md

@@ -62,7 +62,7 @@ catch (Exception e)
62 62
63 63 ## 3+ Includes without AsSplitQuery() (without a select)
64 64
65 - **Always** consider the query that will actually be executed. This will most often result in a cartesian explosion.
65 + **Always** consider the query that will actually be executed. This will most often result in a [cartesian explosion](https://learn.microsoft.com/en-us/ef/core/querying/single-split-queries).
66 66
67 67 Incorrect
68 68 ```C#

emildr revised this gist 11 months ago. Go to revision

1 file changed, 2 insertions, 2 deletions

insta_pr_decline.md

@@ -60,9 +60,9 @@ catch (Exception e)
60 60 }
61 61 ```
62 62
63 - ## 3+ Includes without AsSplitQuery()
63 + ## 3+ Includes without AsSplitQuery() (without a select)
64 64
65 - **Always** consider the query that will actually be executed.
65 + **Always** consider the query that will actually be executed. This will most often result in a cartesian explosion.
66 66
67 67 Incorrect
68 68 ```C#

emildr revised this gist 11 months ago. Go to revision

1 file changed, 3 insertions, 3 deletions

insta_pr_decline.md

@@ -16,7 +16,7 @@ foreach (var id in itemIds)
16 16
17 17 Correct:
18 18 ```C#
19 - var items = await _context.Items.Where(x => itemIds.Contains(x.Id));
19 + var items = await _context.Items.Where(x => itemIds.Contains(x.Id)).AsAsyncEnumerable();
20 20 foreach (var item in items)
21 21 {
22 22 // Logic
@@ -30,7 +30,7 @@ If you don't know if you need it, you need it.
30 30
31 31 Incorrect
32 32 ```C#
33 - var items = await _context.Items.Where(x => itemIds.Contains(x.Id));
33 + var items = await _context.Items.Where(x => itemIds.Contains(x.Id)).AsAsyncEnumerable();
34 34 foreach (var item in items)
35 35 {
36 36 // Logic
@@ -44,7 +44,7 @@ await using var transaction = await context.Database.BeginTransactionAsync();
44 44
45 45 try
46 46 {
47 - var items = await _context.Items.Where(x => itemIds.Contains(x.Id));
47 + var items = await _context.Items.Where(x => itemIds.Contains(x.Id)).AsAsyncEnumerable();
48 48 foreach (var item in items)
49 49 {
50 50 // Logic

emildr revised this gist 11 months ago. Go to revision

1 file changed, 1 insertion, 1 deletion

insta_pr_decline.md

@@ -24,7 +24,7 @@ foreach (var item in items)
24 24 await _context.SaveChangesAsync();
25 25 ```
26 26
27 - ## 2+ Queries updating/inserting queries without a transaction
27 + ## 2+ Queries updating/inserting without a transaction
28 28
29 29 If you don't know if you need it, you need it.
30 30

emildr revised this gist 11 months ago. Go to revision

No changes

emildr revised this gist 11 months ago. Go to revision

1 file changed, 2 insertions

insta_pr_decline.md

@@ -89,10 +89,12 @@ await _context.Users
89 89
90 90 You **will** forget.
91 91
92 + Incorrect
92 93 ```C#
93 94 var theThing = getTheThing(); // TODO: Do the right thing!
94 95 ```
95 96
97 + Correct
96 98 ```C#
97 99 var theThing = getTheThing(); // TODO: Do the right thing! (#8383)
98 100 ```
Newer Older