-
-
Notifications
You must be signed in to change notification settings - Fork 21
Cache dropdown contents until admin makes them dirty (custom, org, for example) #27
Comments
Maybe use EF. Can cache. |
The lifecycle of the app, it's like a normal C# program. When it starts running the static classes like bd_util, bd_db, bd_config, and bd_session as well as Program and Startup a constructed and stay alive as singletons during the entire program. Any of them with global static variables, those variables serve as a cache. The one thing to keep in mind is that the global static variables can be accessed by multiple threads, so need to be protected. So, in other words, HOW to cache is not an issue. What is an issue is that the logic for maintaining the cache is just one more thing that can be buggy, one more thing to break, so I don't want to do it if the benefit is small. |
That's why I mentioned EF as it encapsulates all the work with cache. |
Right, if ALL our database updates were done via EF, then EF caching would make sense, but it's either all or nothing. For EF to cache correctly we would have to do all updates via EF. |
For your english practice: |
So many letters. 😄 |
I agree with many things. But something has changed since then. https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/anonymous-types |
Yeah, maybe the codebase would be better if I did the db stuff a different way. |
And that tool you are using where you can type C# code instead of sql into it, is there something like that available for linux? |
"Bugs" is an EF model? |
The predicate is always true, get all records. |
|
Like https://docs.microsoft.com/en-us/dotnet/api/system.linq.iqueryable-1?view=net-5.0 |
I think EF with console logging will show SQL. |
I don't understand why you are sending this to me. I don't understand how it relates to what we've talked about. Please explain. |
I'm timing how long it takes Issue.cshtml.cs OnGet, and it's usually about 20 milliseconds, so there's no point in trying to optimize it more, it's already so fast. |
These issues are addressed in the article. I thought this might be interesting.
From article. |
👍 |
Sorry, I don't understand how the quote about identity relates to decisions about how to code Budoco. |
This applies to EF or ORM. |
"this is solved". WHAT is solved? I still don't understand how this discussion relates to decisions about how to code Budoco. |
In the second case, "Name" became a unique key as in the database. |
You read the article more carefully than me! I dislike having to learn an API (EF) to write a language that I already know how to write (SQL). The abstraction is super leaky, like N+1, or any query that returns something that isn't a "User", but rather just a column from the users table, or a join between two tables. If I just want everything LINQ'ified, then maybe Dapper would be good, but 99% of what i do is just foreach (DataRow dr.... so why would I bring in another library just so that it loads the DataTable results into a different kind of collection? There are some things I like about ORMs:
|
Don't use object graph. All libraries over SQL solve other problems in parallel: caching, code duplication, security ... |
The solve all problems except for the 1,400 open issues against EF. |
This is pulling up the issue create form
SQL 1:/check_user_permissions/ select * from sessions
inner join users on se_user = us_id
where se_id = '46db6f69-dad5-49de-b9d3-c4e15d4724f4'; /*check_user_permissions */
SQL 2:select og_id, og_name from organizations where og_is_active = true union select 0, '[None]' order by og_name
SQL 3:select us_id, us_username from users where us_is_active = true order by us_username
SQL 4:select c1_id, c1_name from custom_1 where c1_is_active = true order by c1_name
SQL 5:select c2_id, c2_name from custom_2 where c2_is_active = true order by c2_name
SQL 6:select c4_id, c4_name from custom_4 where c4_is_active = true order by c4_name
SQL 7:select og_id, og_name from organizations where og_is_default is true order by og_name limit 1
SQL 8:select c1_id from custom_1 where c1_is_default is true order by c1_name limit 1
SQL 9:select c2_id from custom_2 where c2_is_default is true order by c2_name limit 1
SQL 10:select c4_id from custom_4 where c4_is_default is true order by c4_name limit 1
layout_si
The text was updated successfully, but these errors were encountered: