<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Birupakhya Dash</title>
    <description>The latest articles on DEV Community by Birupakhya Dash (@birupakhya_dash).</description>
    <link>https://dev.to/birupakhya_dash</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2363185%2F8e5ac694-fda1-4412-93a2-82ee739027e0.png</url>
      <title>DEV Community: Birupakhya Dash</title>
      <link>https://dev.to/birupakhya_dash</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/birupakhya_dash"/>
    <language>en</language>
    <item>
      <title>🚀 EF Core Just Changed the Way We Update Data — Here’s Why It Matters</title>
      <dc:creator>Birupakhya Dash</dc:creator>
      <pubDate>Mon, 23 Mar 2026 11:56:58 +0000</pubDate>
      <link>https://dev.to/birupakhya_dash/ef-core-just-changed-the-way-we-update-data-heres-why-it-matters-4397</link>
      <guid>https://dev.to/birupakhya_dash/ef-core-just-changed-the-way-we-update-data-heres-why-it-matters-4397</guid>
      <description>&lt;p&gt;🚀 &lt;strong&gt;EF Core Just Changed the Way We Update Data — Here’s Why It Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For years, updating records in Entity Framework followed a familiar pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fetch data from the database&lt;/li&gt;
&lt;li&gt;Modify it in memory&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;SaveChanges()&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It worked—but it wasn’t efficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧠 The Problem with the Old Approach
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;_context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FtpRequestDetails&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FtpRequestId&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ftpRequestId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ToListAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;foreach&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FtpStatusId&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;_context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SaveChangesAsync&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  ❌ Issues:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Loads data into memory unnecessarily&lt;/li&gt;
&lt;li&gt;Slower for large datasets&lt;/li&gt;
&lt;li&gt;Requires change tracking&lt;/li&gt;
&lt;li&gt;More boilerplate code&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚡ The Game-Changer: &lt;code&gt;ExecuteUpdateAsync()&lt;/code&gt; (EF Core 7+)
&lt;/h2&gt;

&lt;p&gt;EF Core introduced a &lt;strong&gt;set-based update approach&lt;/strong&gt; that directly executes SQL without loading entities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;_context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FtpRequestDetails&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Where&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FtpRequestId&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="n"&gt;ftpRequestId&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ExecuteUpdateAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;setters&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;setters&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FtpStatusId&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ThreadLocked&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;?)&lt;/span&gt;&lt;span class="k"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ThreadUnlockedTime&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Now&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;SetProperty&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Comments&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"Rejected Details"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  🔍 What’s Happening Behind the Scenes?
&lt;/h2&gt;

&lt;p&gt;This LINQ query is translated into a &lt;strong&gt;single SQL statement&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;FtpRequestDetails&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; 
    &lt;span class="n"&gt;FtpStatusId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;ThreadLocked&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;ThreadUnlockedTime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;GETDATE&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="n"&gt;Comments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Rejected Details'&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;FtpRequestId&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;@&lt;/span&gt;&lt;span class="n"&gt;ftpRequestId&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 No entity loading&lt;br&gt;
👉 No loops&lt;br&gt;
👉 Just pure SQL execution&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why This Matters
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🚀 Performance Boost
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Eliminates unnecessary data fetching&lt;/li&gt;
&lt;li&gt;Executes directly in the database&lt;/li&gt;
&lt;li&gt;Ideal for bulk operations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🧹 Cleaner Code
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No loops&lt;/li&gt;
&lt;li&gt;No manual tracking&lt;/li&gt;
&lt;li&gt;Minimal code, maximum impact&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ⚙️ Better Scalability
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Handles large datasets efficiently&lt;/li&gt;
&lt;li&gt;Perfect for background jobs &amp;amp; batch updates&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚠️ Things to Keep in Mind
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ❌ No Change Tracking
&lt;/h3&gt;

&lt;p&gt;EF Core won’t track these changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ No &lt;code&gt;SaveChanges()&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;This executes immediately—no unit of work involved.&lt;/p&gt;

&lt;h3&gt;
  
  
  ❌ No Entity Events
&lt;/h3&gt;

&lt;p&gt;Hooks, validations, or domain events won’t run.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 When Should You Use It?
&lt;/h2&gt;

&lt;p&gt;✔ Bulk updates&lt;br&gt;
✔ Background processing&lt;br&gt;
✔ Performance-critical operations&lt;br&gt;
✔ Updating multiple records at once&lt;/p&gt;




&lt;h2&gt;
  
  
  🚫 When NOT to Use It
&lt;/h2&gt;

&lt;p&gt;❌ If you rely on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business logic per entity&lt;/li&gt;
&lt;li&gt;Validation rules&lt;/li&gt;
&lt;li&gt;Domain events or auditing&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🆚 Old vs New
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Old Approach&lt;/th&gt;
&lt;th&gt;New Approach&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Performance&lt;/td&gt;
&lt;td&gt;❌ Slower&lt;/td&gt;
&lt;td&gt;✅ Faster&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory Usage&lt;/td&gt;
&lt;td&gt;❌ High&lt;/td&gt;
&lt;td&gt;✅ Low&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change Tracking&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;❌ No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code Complexity&lt;/td&gt;
&lt;td&gt;❌ More&lt;/td&gt;
&lt;td&gt;✅ Less&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  🏁 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;EF Core’s &lt;code&gt;ExecuteUpdateAsync()&lt;/code&gt; is a &lt;strong&gt;major shift toward modern, high-performance data handling&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It brings the power of SQL directly into LINQ—without sacrificing readability.&lt;/p&gt;

&lt;p&gt;👉 If you're still using the old pattern for bulk updates, it's time to upgrade.&lt;/p&gt;




&lt;p&gt;💬 Have you started using &lt;code&gt;ExecuteUpdateAsync()&lt;/code&gt; yet?&lt;br&gt;
Would love to hear your experience!&lt;/p&gt;

&lt;h1&gt;
  
  
  DotNet #EFCore #CleanCode #Performance #SoftwareEngineering #CSharp #Developers
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Fixing the "String or Binary Data Would Be Truncated" Error in EF Core</title>
      <dc:creator>Birupakhya Dash</dc:creator>
      <pubDate>Wed, 18 Mar 2026 10:12:20 +0000</pubDate>
      <link>https://dev.to/birupakhya_dash/fixing-the-string-or-binary-data-would-be-truncated-error-in-ef-core-2dji</link>
      <guid>https://dev.to/birupakhya_dash/fixing-the-string-or-binary-data-would-be-truncated-error-in-ef-core-2dji</guid>
      <description>&lt;h1&gt;
  
  
  Fixing the "String or Binary Data Would Be Truncated" Error in EF Core
&lt;/h1&gt;

&lt;p&gt;If you’ve worked with Entity Framework Core and SQL Server, you’ve likely encountered this error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String or binary data would be truncated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first glance, this error is frustrating because it doesn't tell you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which table failed&lt;/li&gt;
&lt;li&gt;Which column caused the issue&lt;/li&gt;
&lt;li&gt;What the allowed size is&lt;/li&gt;
&lt;li&gt;What value exceeded the limit&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So debugging becomes time-consuming.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Consider this table:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="n"&gt;Users&lt;/span&gt;
&lt;span class="n"&gt;FirstName&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now insert:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="s2"&gt;"ThisIsAVeryLongNameThatExceedsLimit"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SQL Server throws:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String or binary data would be truncated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But gives no details.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: DBGuard
&lt;/h2&gt;

&lt;p&gt;To solve this, I built a library called &lt;strong&gt;DBGuard&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;DBGuard validates entity data against the &lt;strong&gt;actual database schema before SaveChanges&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Flow:&lt;/p&gt;

&lt;p&gt;Application&lt;br&gt;
→ EF Core SaveChanges&lt;br&gt;
→ DBGuard Interceptor&lt;br&gt;
→ Validation Engine&lt;br&gt;
→ Database&lt;/p&gt;


&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;Instead of SQL Server error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;String or binary data would be truncated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DBGuard returns:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="s"&gt;DBGuard Validation Failed&lt;/span&gt;

&lt;span class="na"&gt;Table&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Users&lt;/span&gt;
&lt;span class="na"&gt;Column&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;FirstName&lt;/span&gt;
&lt;span class="na"&gt;Allowed Length&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;
&lt;span class="na"&gt;Actual Length&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;45&lt;/span&gt;

&lt;span class="na"&gt;Suggestion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Trim input or increase column length&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dotnet add package DBGuard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csharp"&gt;&lt;code&gt;&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddDbGuard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connectionString&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="n"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Services&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AddDbContext&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;AppDbContext&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;((&lt;/span&gt;&lt;span class="n"&gt;sp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;=&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;interceptor&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;GetRequiredService&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;DbGuardInterceptor&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;();&lt;/span&gt;

    &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;UseSqlServer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;connectionString&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
           &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;AddInterceptors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;interceptor&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Schema-aware validation&lt;/li&gt;
&lt;li&gt;Column length validation&lt;/li&gt;
&lt;li&gt;Null &amp;amp; type validation&lt;/li&gt;
&lt;li&gt;Decimal precision validation&lt;/li&gt;
&lt;li&gt;EF Core interceptor&lt;/li&gt;
&lt;li&gt;Logging and diagnostics&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  GitHub
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/birupakhya2000/DBGuard" rel="noopener noreferrer"&gt;https://github.com/birupakhya2000/DBGuard&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;This is a common problem many developers face.&lt;/p&gt;

&lt;p&gt;I’d love feedback and suggestions from the community 🙌&lt;/p&gt;

</description>
      <category>dotnet</category>
      <category>efcore</category>
      <category>entityframework</category>
    </item>
  </channel>
</rss>
