How do you track what changed in your database and who changed it?
In this video, Sarrawy Dev compares custom EF Core audit logging with the built-in auditing features of Entity Framework Plus, our free and open-source library.
๐ฅ youtube.com/watch?v=z-foHsP2โฆ
๐ This monthโs ZZZ Projects newsletter is here! ๐
๐ mailchi.mp/zzzprojects/whatsโฆ
#DotNet #EFCore #EntityFramework #ZZZProjects
ZZZ Projects retweeted
Replying to @zzzprojects
5,000 IDs. Four fixes. How does EF Core handle it? ๐
In his latest video, Mukesh Murugan benchmarks four ways to handle large lists and composite keys in EF Core 10 including WhereBulkContains from our Entity Framework Extensions library.
๐ฅ Watch: youtube.com/watch?v=rB_jwduIโฆ
Congrats to our October winner! ๐
โI have used this in my system to save bulk data, it is very good extensionโ โ Muhammad Bilal
Next month, it could be you! Share your feedback for a chance to win a free license. ๐
entityframework-extensions.nโฆ
ZZZ Projects retweeted
Replying to @kristijan_kralj
I don't like SQLBulkCopy. So much code to write, especially when you need to insert related entities. And it's error-prone. And it doesn't work on other databases. I prefer cross-database libraries for bulk writes for EF Core, such as Entity Framework Extensions.
Our September newsletter is here! ๐จ
Catch up on the latest ZZZ Projects product updates, .NET 10 compatibility, new releases and fixes, community articles and videos, plus contest: mailchi.mp/zzzprojects/whatsโฆ
ZZZ Projects retweeted
With Dapper you run the application and it crashes because of a bug in SQL string
Here is how to fix it ๐
Dapper is fast and gives you full control over SQL.
But that control comes with a hidden cost.
Every INSERT, UPDATE, and DELETE you write lives inside a string.
And strings have zero type safety.
โณ Rename a column? No compile error.
โณ Change a property type? No compile error.
โณ Misspell a parameter name? No compile error.
You only find out something is broken when your app crashes at runtime.
Here is what most developers do when using Dapper:
โ Write SQL commands as plain strings
โ Map every parameter by hand
โ Repeat the same column lists across Insert, Update, and Delete
โ Hardcode table and schema names everywhere
One small refactor breaks half of your queries.
And the compiler will not save you.
There is a much better way.
In my latest video, I show how to solve this with ๐๐ฎ๐ฝ๐ฝ๐ฒ๐ฟ ๐ฃ๐น๐๐ ๐ ๐ฎ๐ฝ๐ฝ๐ถ๐ป๐ด.
Dapper Plus gives you 3 ways to map your entities to the database - all type-safe.
๐ญ. ๐๐๐๐ผ ๐ ๐ฎ๐ฝ๐ฝ๐ถ๐ป๐ด
โ Zero configuration needed
โ Library matches class name to table name
โ Properties match column names automatically
โ Just call SingleInsert or BulkInsert and it works
๐ฎ. ๐๐ฎ๐๐ฎ ๐๐ป๐ป๐ผ๐๐ฎ๐๐ถ๐ผ๐ป๐
โ Use [Table], [Column], [Key], [NotMapped] attributes
โ Familiar to anyone using EF Core
โ Keeps mapping next to your model
๐ฏ. ๐๐น๐๐ฒ๐ป๐ ๐๐ฃ๐ ๐ ๐ฎ๐ฝ๐ฝ๐ถ๐ป๐ด
โ Full control with strongly-typed lambdas
โ Map only what you need: .Map(x => new { x.Name, x.Price })
โ MapAuto method and DapperPlus figures it out for you
โ Refactor-friendly: rename a property and the compiler tells you
You can also organize mappings with ๐๐ฎ๐ฝ๐ฝ๐ฒ๐ฟ ๐ฃ๐น๐๐ ๐๐ผ๐ป๐๐ฒ๐
๐:
โ Global context - configure once at startup
โ Instance context - configure per use case
โ Inheritance context - reuse mappings across services
And the best part?
The same mapping works for ๐ฏ๐ผ๐๐ต free Single methods ๐ฎ๐ป๐ฑ paid Bulk methods.
No more SQL strings scattered across your codebase.
No more runtime surprises after a refactor.
Just clean, type-safe writes.
Watch the full video and see all 3 mapping approaches in action.
P.S.: You can get a free trial for this library and test for 30 days, and you can extend the trial for another month as needed.
Get started with Dapper Plus Mapping:
dapper-plus.net/mapping?utm_โฆ
Here is the source code:
github.com/anton-martyniuk/eโฆ
How do you solve runtime bugs in SQL strings when using Dapper? Share below ๐
โโ
โป๏ธ Repost to help others write type-safe Dapper queries
โ Follow me ( @anton-martyniuk ) to improve your .NET and Architecture Skills
Many thanks to @zzzprojects for sponsoring this post
This article explores the differences between SqlBulkCopy and Dapper Plus, helping developers understand the trade-offs between flexibility, simplicity, and raw speed.
A great read for anyone looking to optimize bulk operations in .NET ๐
pavle.codes/dapper-plus-or-sโฆ
ZZZ Projects retweeted
Replying to @AntonMartyniuk
Dapper plus is the best library for bulk operations, super fast and comprehensive. Teams can really benefit from it. Good value for its license. It is an investment for your product.
ZZZ Projects retweeted
๐ Important note:
You can use the following methods for free in Dapper Plus:
โ SingleInsert - insert one entity without writing SQL
โ SingleUpdate - update one entity
โ SingleDelete - delete one entity
โ SingleMerge - upsert in one line (insert or update)
โ SingleSynchronize - keep your data in sync with the source
โ CreateTable - create the table directly from your C# class
Get started with Dapper Plus:
dapper-plus.net/?utm_source=โฆ
ZZZ Projects retweeted
Dapper ๐ต๐ฎ๐ ๐ฎ ๐ฏ๐ถ๐ด ๐ฝ๐ฒ๐ฟ๐ณ๐ผ๐ฟ๐บ๐ฎ๐ป๐ฐ๐ฒ ๐ฝ๐ฒ๐ป๐ฎ๐น๐๐ ๐๐ต๐ฒ๐ป ๐๐ผ๐ insert multiple rows.
Here is how to address this problem ๐
Developers love Dapper for blazing-fast reads.
But for inserting or updating many rows, it becomes painfully slow (even slower than EF Core).
But Why?
Dapper sends each row to the database one by one.
10,000 rows = 10,000 round-trips.
And here is another problem:
โณ You need to write a lot of boilerplate code when using Dapper.
Here is what most developers do when using Dapper:
โ Write manual INSERT and UPDATE SQL statements
โ Build complex SQL with hundreds of parameters by hand
โ Write CREATE TABLE scripts
And the problem is that you don't have type safety when writing SQL commands inside strings. When something goes wrong you will only know at runtime.
There is a much better way.
In my latest video, I show how to solve this with ๐๐ฎ๐ฝ๐ฝ๐ฒ๐ฟ ๐ฃ๐น๐๐.
๐ ๐ฆ๐๐ผ๐ฝ ๐ช๐ฟ๐ถ๐๐ถ๐ป๐ด ๐๐ผ๐บ๐ฝ๐น๐ฒ๐
๐ฆ๐ค๐ ๐๐ผ ๐ฆ๐ฎ๐๐ฒ ๐๐ฎ๐๐ฎ - ๐๐ฒ๐ ๐๐ฎ๐ฝ๐ฝ๐ฒ๐ฟ ๐ฃ๐น๐๐ ๐๐ผ ๐๐ ๐ณ๐ผ๐ฟ ๐ฌ๐ผ๐.
Dapper Plus gives you clean, simple methods for every write operation.
๐๐ฟ๐ฒ๐ฒ ๐ฆ๐ถ๐ป๐ด๐น๐ฒ ๐ ๐ฒ๐๐ต๐ผ๐ฑ๐:
โ SingleInsert - insert one entity without writing SQL
โ SingleUpdate - update one entity
โ SingleDelete - delete one entity
โ SingleMerge - upsert in one line (insert or update)
โ SingleSynchronize - keep your data in sync with the source
โ CreateTable - create the table directly from your C# class
No more manual SQL.
No more parameter mapping by hand.
Just call the method and Dapper Plus handles the rest.
All single methods are ๐ณ๐ฟ๐ฒ๐ฒ ๐๐ผ ๐๐๐ฒ.
๐ฃ๐ฎ๐ถ๐ฑ ๐๐๐น๐ธ ๐ ๐ฒ๐๐ต๐ผ๐ฑ๐ (for high performance):
โ BulkInsert
โ BulkUpdate
โ BulkDelete
โ BulkMerge
โ BulkSynchronize
This is where the real magic happens.
I inserted 10,000 product records into the database:
โ Dapper: 7,000 ms
โ
Dapper Plus BulkInsert: 300 ms
That is over ๐ต๐ฒ% ๐ณ๐ฎ๐๐๐ฒ๐ฟ with a single line of code.
Dapper Plus supports SQL Server, PostgreSQL, MySQL, Oracle, MariaDB, and SQLite.
Watch the full video and see every method in action.
P.S.: You can get a free trial for this library and test for 30 days, and you can extend the trial for another month as needed.
Get started with Dapper Plus:
dapper-plus.net?utm_source=aโฆ
Here is the source code:
github.com/anton-martyniuk/eโฆ
How do you currently handle bulk inserts in Dapper? Share below ๐
โโ
โป๏ธ Repost to help others speed up their Dapper write queries
โ Follow me ( @AntonMartyniuk ) to improve your .NET and Architecture Skills
Many thanks to @zzzprojects for sponsoring this post
๐ค Paid partnership
๐ New video from Anton Martyniuk about improving Dapper performance with Dapper Plus!
If you're working with Dapper and handling large amounts of data, this video is worth watching.
๐ฅ Watch the video:
youtube.com/watch?v=DWi8_KMsโฆ
#dotnet #dapper #csharp #sqlserver #programming
๐ New article by Anton Martyniuk
๐ antondevtips.com/blog/the-reโฆ
Returning identity values in EF Core isnโt as simple as it looks.
A quick, insightful read on what happens under the hood and when it really matters ๐
#dotnet #efcore #csharp
๐ Sharing a great video on Entity Framework Extensions!
If you're working with Entity Framework Core and looking to boost performance, especially for bulk operations, this is definitely worth a watch.
๐ฅ youtube.com/watch?v=amycVyBaโฆ
๐ฌ New video is live!
LINQ Dynamic vs C# Eval Expression: Which One Should You Use?
Anton Martyniuk walks through key concepts and practical examples to help you get up and running.
๐ Watch here: youtube.com/watch?v=twipi1MOโฆ
New article on YogiHosting!
Learn how to boost your EF Core performance using Entity Framework Extensions for fast bulk operations (insert, update, delete, merge).
๐ yogihosting.com/entity-frameโฆ
#DotNet #EFCore #EntityFramework #Performance #ZZZProjects
March Monthly Contest Winner
โDefinitely the library is amazing, and is ideal for high-performance scenarios where efficiency and clear data access logic matter most.โ
โ Nelson Solorzano, Freelancer
Thanks for sharing your experience ๐
๐ entityframework-extensions.nโฆ
#DotNet #EF
New video in Arabic!
If you're working with Entity Framework, this video is worth checking out.
Youโll learn how to:
โ๏ธ Boost performance
โ๏ธ Reduce execution time
โ๏ธ Handle large datasets more efficiently
Video here: youtube.com/watch?v=7q2lfUpaโฆ
#dotnet #EntityFramework
๐ New article by Anton Martyniuk
Learn how to get the most out of Entity Framework Extensions by understanding its key options โ from column control to performance tuning.
๐ antondevtips.com/blog/entityโฆ



