{"id":2254,"date":"2023-06-13T11:28:32","date_gmt":"2023-06-13T04:28:32","guid":{"rendered":"https:\/\/csharptutorial.net\/?page_id=2254"},"modified":"2023-06-13T11:34:35","modified_gmt":"2023-06-13T04:34:35","slug":"ef-core-update","status":"publish","type":"page","link":"https:\/\/www.csharptutorial.net\/entity-framework-core-tutorial\/ef-core-update\/","title":{"rendered":"EF Core Update"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you will learn various ways to update data in database tables in EF Core.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Setting up a sample project<\/h2>\n\n\n\n<p>First, download the HR sample project:<\/p>\n\n\n\n<p><a href=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/06\/EFCoreHR.zip\" target=\"_blank\" rel=\"noreferrer noopener\">Download EF Core HR Sample Project<\/a><\/p>\n\n\n\n<p>Second, run the Add-Migration command in the Package Manager Console (PMC) to create a new migration:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">Add-Migration Initial<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, execute the Update-Database command in the PMC to create a new HR database and tables in the local SQL Server:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">Update-Database<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Performing a simple update<\/h2>\n\n\n\n<p>We&#8217;ll start with the <code>Department<\/code> entity:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"219\" height=\"124\" src=\"https:\/\/csharptutorial.net\/wp-content\/uploads\/2023\/06\/EF-Core-Departments-Table-1.png\" alt=\"\" class=\"wp-image-2263\"\/><\/figure>\n\n\n\n<p>Let&#8217;s start by inserting a new department into the <code>Departments<\/code> table by creating a new <code>Department<\/code> entity, adding it to the <code>DbSet&lt;Department><\/code>, and calling the <code>SaveChanges()<\/code> method of the <code>HRContext<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-keyword\">var<\/span> department = <span class=\"hljs-keyword\">new<\/span> Department() { Name = <span class=\"hljs-string\">\"Sales\"<\/span> };\n\ncontext.Departments.Add(department);\ncontext.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core will insert one row into the <code>Departments<\/code> table with id 1.<\/p>\n\n\n\n<p>To update an entity, you follow these steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>First, get the entity by querying it from the database.<\/li>\n\n\n\n<li>Second, make changes to the entity.<\/li>\n\n\n\n<li>Third, call the <code>SaveChanges()<\/code> method of the <code>DbContext<\/code> to propagate the changes to the database.<\/li>\n<\/ul>\n\n\n\n<p>For example, the following changes the name of the <code>Sales<\/code> department with Id <code>1<\/code> to <code>Sales Force<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-comment\">\/\/ get the department by Id<\/span>\n<span class=\"hljs-keyword\">var<\/span> department = context.Departments.Find(<span class=\"hljs-number\">1<\/span>);\n\n<span class=\"hljs-keyword\">if<\/span> (department != <span class=\"hljs-literal\">null<\/span>)\n{\n    <span class=\"hljs-comment\">\/\/ make changes to the department<\/span>\n    department.Name = <span class=\"hljs-string\">\"Sales Force\"<\/span>;\n\n    <span class=\"hljs-comment\">\/\/ update the changes<\/span>\n    context.SaveChanges();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p class=\"note\">Note that the <code>HRContext<\/code> extends the <code>DbContext<\/code> and defines the <code>DbSet<\/code> such as <code>Departments<\/code> with the type <code>DbSet&lt;Department><\/code>.<\/p>\n\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, find the department with Id 1 by using the <code>Find()<\/code> method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">var<\/span> department = context.Departments.Find(<span class=\"hljs-number\">1<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core executes a SQL <code>SELECT<\/code> statement to find the department by Id:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">-- &#91;Parameters = &#91;@__p_0 = '1' ], CommandType = 'Text', CommandTimeout = '30' ] <\/span>\n<span class=\"hljs-keyword\">SELECT<\/span> \n  TOP(<span class=\"hljs-number\">1<\/span>) &#91;d].&#91;<span class=\"hljs-keyword\">Id<\/span>], \n  &#91;d].&#91;<span class=\"hljs-keyword\">Name<\/span>] \n<span class=\"hljs-keyword\">FROM<\/span> \n  &#91;Departments] <span class=\"hljs-keyword\">AS<\/span> &#91;d] \n<span class=\"hljs-keyword\">WHERE<\/span> \n  &#91;d].&#91;<span class=\"hljs-keyword\">Id<\/span>] = @__p_0<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, change the department name to <code>Sales Force<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">department.Name = <span class=\"hljs-string\">\"Sales Force\"<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, save the changes to the database by calling the <code>Update()<\/code> method of the <code>HRContext<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">context.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core executes the SQL <code><a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-update\/\" target=\"_blank\" rel=\"noreferrer noopener\">UPDATE<\/a><\/code> statement to update the <code>Departments<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">-- &#91;Parameters=&#91;@p1='1', @p0='Sales Force' (Nullable = false) (Size = 4000)], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SET<\/span> IMPLICIT_TRANSACTIONS <span class=\"hljs-keyword\">OFF<\/span>;\n<span class=\"hljs-keyword\">SET<\/span> COCOUNT <span class=\"hljs-keyword\">ON<\/span>;\n\n<span class=\"hljs-keyword\">UPDATE<\/span> \n  &#91;Departments] \n<span class=\"hljs-keyword\">SET<\/span> \n  &#91;<span class=\"hljs-keyword\">Name<\/span>] = @p0 \n<span class=\"hljs-keyword\">OUTPUT<\/span> <span class=\"hljs-number\">1<\/span> \n<span class=\"hljs-keyword\">WHERE<\/span> \n  &#91;<span class=\"hljs-keyword\">Id<\/span>] = @p1;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>If you view the <code>Departments<\/code> table, you&#8217;ll see that the name has been updated successfully:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Id          Name\n----------- --------------------\n1           Sales Force<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Updating entity with Id<\/h2>\n\n\n\n<p>If you know the Id of the entity, you can update it by specifying the Id and new values for the properties that you want to change. For example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-comment\">\/\/ Update the name of department<\/span>\n<span class=\"hljs-comment\">\/\/ with Id 1 to Sales<\/span>\n<span class=\"hljs-keyword\">var<\/span> department = <span class=\"hljs-keyword\">new<\/span> Department()\n{\n    Id = <span class=\"hljs-number\">1<\/span>,\n    Name = <span class=\"hljs-string\">\"Sales\"<\/span>,\n};\n\ncontext.Update(department);\ncontext.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, create a new <code>Department<\/code> object by specifying the Id 1 and the new value for the <code>Name<\/code> property:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-12\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">var<\/span> department = <span class=\"hljs-keyword\">new<\/span> Department()\n{\n    Id = <span class=\"hljs-number\">1<\/span>,\n    Name = <span class=\"hljs-string\">\"Sales\"<\/span>,\n};<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-12\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, call the <code>Update()<\/code> method of the <code>DbContext<\/code> to update the entity:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-13\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">context.Update(department);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-13\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, call the <code>SaveChanges()<\/code> to apply the changes to the database:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-14\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">context.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-14\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this example, EF Core only needs to execute an <code>UPDATE<\/code> statement:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-15\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"> <span class=\"hljs-comment\">-- &#91;Parameters=&#91;@p1='1', @p0='Sales' (Nullable = false) (Size = 4000)], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SET<\/span> IMPLICIT_TRANSACTIONS <span class=\"hljs-keyword\">OFF<\/span>;\n<span class=\"hljs-keyword\">SET<\/span> NOCOUNT <span class=\"hljs-keyword\">ON<\/span>;\n\n<span class=\"hljs-keyword\">UPDATE<\/span> &#91;Departments] <span class=\"hljs-keyword\">SET<\/span> &#91;<span class=\"hljs-keyword\">Name<\/span>] = @p0\n<span class=\"hljs-keyword\">OUTPUT<\/span> <span class=\"hljs-number\">1<\/span>\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;<span class=\"hljs-keyword\">Id<\/span>] = @p1;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-15\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Notice that if the Id is invalid, EF Core won&#8217;t be able to find the record for updating. In this case, EF Core will raise an exception like the following example:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-16\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n\n<span class=\"hljs-keyword\">var<\/span> department = <span class=\"hljs-keyword\">new<\/span> Department()\n{\n    Id = <span class=\"hljs-number\">10<\/span>, <span class=\"hljs-comment\">\/\/ Invalid Id<\/span>\n    Name = <span class=\"hljs-string\">\"Sales\"<\/span>,\n}; \n\ncontext.Update(department);\ncontext.SaveChanges(); <span class=\"hljs-comment\">\/\/ -&gt; Exception<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-16\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Updating in a one-to-many relationship<\/h2>\n\n\n\n<p>The following program adds a new employee to the <code>Employees<\/code> table and a department to the <code>Departments<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-17\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-keyword\">var<\/span> department = <span class=\"hljs-keyword\">new<\/span> Department() { Name = <span class=\"hljs-string\">\"Marketing\"<\/span> };\n<span class=\"hljs-keyword\">var<\/span> employee = <span class=\"hljs-keyword\">new<\/span> Employee()\n{\n    FirstName = <span class=\"hljs-string\">\"John\"<\/span>,\n    LastName = <span class=\"hljs-string\">\"Doe\"<\/span>,\n    Salary = <span class=\"hljs-number\">120<\/span>_000,\n    JoinedDate = <span class=\"hljs-keyword\">new<\/span> DateTime(<span class=\"hljs-number\">2023<\/span>, <span class=\"hljs-number\">5<\/span>, <span class=\"hljs-number\">1<\/span>),\n    Department = department\n};\n\ncontext.Add(employee);\ncontext.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-17\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following shows the employee (not all fields) in the <code>Employees<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-18\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Id          FirstName       LastName        DepartmentId\n----------- --------------- --------------- ------------\n1           John            Doe             2<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-18\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And here are the contents of the <code>Departments<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-19\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Id          Name\n----------- ---------------\n1           Sales\n2           Marketing<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-19\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To update the department for the employee from <code>Marketing<\/code> to <code>Sales<\/code>, you can change the <code>DepartmentId<\/code> of the <code>Employee<\/code> entity and call the <code>SaveChanges()<\/code> method:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-20\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-keyword\">var<\/span> employee = context.Employees.Find(<span class=\"hljs-number\">1<\/span>);\n\n<span class=\"hljs-keyword\">if<\/span>(employee != <span class=\"hljs-literal\">null<\/span>)\n{\n    employee.DepartmentId = <span class=\"hljs-number\">2<\/span>;\n    context.SaveChanges();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-20\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Once you run the program, you&#8217;ll see that the <code>DepartmentId<\/code> is updated:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-21\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Id          FirstName       LastName        DepartmentId\n----------- --------------- --------------- ------------\n1           John            Doe             2<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-21\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Alternatively, you can change the <code>Department<\/code> property of the employee entity to another department and call the <code>SaveChanges()<\/code>. <\/p>\n\n\n\n<p>The following example changes the department of <code>John Doe<\/code> back to <code>Sales<\/code>:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-22\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-comment\">\/\/ find the employee with id 1<\/span>\n<span class=\"hljs-keyword\">var<\/span> employee = context.Employees.Find(<span class=\"hljs-number\">1<\/span>);\n\n<span class=\"hljs-keyword\">if<\/span> (employee != <span class=\"hljs-literal\">null<\/span>)\n{\n    <span class=\"hljs-comment\">\/\/ find the Sales department<\/span>\n    <span class=\"hljs-keyword\">var<\/span> department = context.Departments\n                            .Where(d =&gt; d.Name == <span class=\"hljs-string\">\"Sales\"<\/span>)\n                            .FirstOrDefault();\n\n    <span class=\"hljs-keyword\">if<\/span> (department != <span class=\"hljs-literal\">null<\/span>)\n    {\n        employee.Department = department;\n        context.SaveChanges();\n    }\n\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-22\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, find the employee with id 1:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-23\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">var<\/span> employee = context.Employees.Find(<span class=\"hljs-number\">1<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-23\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core executes a <code>SELECT<\/code> statement to find the employee by id:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-24\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">--  &#91;Parameters=&#91;@__p_0='1'], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SELECT<\/span> TOP(<span class=\"hljs-number\">1<\/span>) &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;e].&#91;DepartmentId], &#91;e].&#91;FirstName], &#91;e].&#91;JoinedDate], &#91;e].&#91;LastName], &#91;e].&#91;Salary]\n<span class=\"hljs-keyword\">FROM<\/span> &#91;Employees] <span class=\"hljs-keyword\">AS<\/span> &#91;e]\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>] = @__p_0<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-24\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, find the department by name with the value <code>\"Sales\"<\/code> and get the first one:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-25\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">\n<span class=\"hljs-keyword\">var<\/span> department = context.Departments\n                        .Where(d =&gt; d.Name == <span class=\"hljs-string\">\"Sales\"<\/span>)\n                        .FirstOrDefault();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-25\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-26\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">-- &#91;Parameters=&#91;], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SELECT<\/span> TOP(<span class=\"hljs-number\">1<\/span>) &#91;d].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;d].&#91;<span class=\"hljs-keyword\">Name<\/span>]\n<span class=\"hljs-keyword\">FROM<\/span> &#91;Departments] <span class=\"hljs-keyword\">AS<\/span> &#91;d]\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;d].&#91;<span class=\"hljs-keyword\">Name<\/span>] = N<span class=\"hljs-string\">'Sales'<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-26\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, update the department for the employee and call the <code>SaveChanges()<\/code> to apply the change to the database:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-27\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">employee.Department = department;\ncontext.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-27\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core will execute the following <code><a href=\"https:\/\/www.sqlservertutorial.net\/sql-server-basics\/sql-server-update\/\" target=\"_blank\" rel=\"noreferrer noopener\">UPDATE<\/a><\/code> statement:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-28\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">-- &#91;Parameters=&#91;@p1='1', @p0='1'], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SET<\/span> IMPLICIT_TRANSACTIONS <span class=\"hljs-keyword\">OFF<\/span>;\n<span class=\"hljs-keyword\">SET<\/span> NOCOUNT <span class=\"hljs-keyword\">ON<\/span>;\n\n<span class=\"hljs-keyword\">UPDATE<\/span> &#91;Employees] <span class=\"hljs-keyword\">SET<\/span> &#91;DepartmentId] = @p0\n<span class=\"hljs-keyword\">OUTPUT<\/span> <span class=\"hljs-number\">1<\/span>\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;<span class=\"hljs-keyword\">Id<\/span>] = @p1;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-28\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Updating in a one-to-one relationship<\/h2>\n\n\n\n<p>The following example shows how to add a profile to an employee:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-29\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-comment\">\/\/ find the employee with id 1<\/span>\n<span class=\"hljs-keyword\">var<\/span> employee = context.Employees.Find(<span class=\"hljs-number\">1<\/span>);\n\n<span class=\"hljs-keyword\">if<\/span> (employee != <span class=\"hljs-literal\">null<\/span>)\n{\n    <span class=\"hljs-comment\">\/\/ create a profile for the employee<\/span>\n    employee.Profile = <span class=\"hljs-keyword\">new<\/span> EmployeeProfile()\n    {\n        Phone = <span class=\"hljs-string\">\"(408)-111-2222\"<\/span>,\n        Email = <span class=\"hljs-string\">\"john.doe@test.com\"<\/span>\n    };\n\n    context.SaveChanges();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-29\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core inserts one row into the <code>EmployeeProfiles<\/code> table and set the value of the <code>EmployeeId<\/code> to the value of the Id of the employee:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-30\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">Id          Phone                Email                EmployeeId\n<span class=\"hljs-comment\">----------- -------------------- -------------------- -----------<\/span>\n1           (408)-111-2222       john.doe@test.com    1<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-30\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>To update the phone of the employee, you can query the employee with a profile, modify the phone, and call <code>SaveChanges()<\/code> as follows:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-31\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n<span class=\"hljs-keyword\">using<\/span> Microsoft.EntityFrameworkCore;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-comment\">\/\/ find the employee with id 1<\/span>\n<span class=\"hljs-keyword\">var<\/span> employee = context.Employees\n                    .Include(e =&gt; e.Profile)\n                    .Where(e =&gt; e.Id == <span class=\"hljs-number\">1<\/span>)\n                    .FirstOrDefault();\n\n\n<span class=\"hljs-keyword\">if<\/span> (employee <span class=\"hljs-keyword\">is<\/span> not <span class=\"hljs-literal\">null<\/span> &amp;&amp; employee.Profile <span class=\"hljs-keyword\">is<\/span> not <span class=\"hljs-literal\">null<\/span>)\n{\n    employee.Profile.Phone = <span class=\"hljs-string\">\"(408)-555-5555\"<\/span>;\n    context.SaveChanges();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-31\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, find the employee, including the profile, with id 1:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-32\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">var<\/span> employee = context.Employees\n                    .Include(e =&gt; e.Profile)\n                    .Where(e =&gt; e.Id == <span class=\"hljs-number\">1<\/span>)\n                    .FirstOrDefault();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-32\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-33\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"> <span class=\"hljs-comment\">-- &#91;Parameters=&#91;], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SELECT<\/span> TOP(<span class=\"hljs-number\">1<\/span>) &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;e].&#91;DepartmentId], &#91;e].&#91;FirstName], &#91;e].&#91;JoinedDate], &#91;e].&#91;LastName], &#91;e].&#91;Salary], &#91;e0].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;e0].&#91;Email], &#91;e0].&#91;EmployeeId], &#91;e0].&#91;Phone]\n<span class=\"hljs-keyword\">FROM<\/span> &#91;Employees] <span class=\"hljs-keyword\">AS<\/span> &#91;e]\n<span class=\"hljs-keyword\">LEFT<\/span> <span class=\"hljs-keyword\">JOIN<\/span> &#91;EmployeeProfiles] <span class=\"hljs-keyword\">AS<\/span> &#91;e0] <span class=\"hljs-keyword\">ON<\/span> &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>] = &#91;e0].&#91;EmployeeId]\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>] = <span class=\"hljs-number\">1<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-33\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, modify the phone and update the database:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-34\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">employee.Profile.Phone = <span class=\"hljs-string\">\"(408)-555-5555\"<\/span>;\ncontext.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-34\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-35\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">-- &#91;Parameters=&#91;@p1='1', @p0='(408)-555-5555' (Nullable = false) (Size = 4000)], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SET<\/span> IMPLICIT_TRANSACTIONS <span class=\"hljs-keyword\">OFF<\/span>;\n<span class=\"hljs-keyword\">SET<\/span> NOCOUNT <span class=\"hljs-keyword\">ON<\/span>;\n<span class=\"hljs-keyword\">UPDATE<\/span> &#91;EmployeeProfiles] <span class=\"hljs-keyword\">SET<\/span> &#91;Phone] = @p0\n<span class=\"hljs-keyword\">OUTPUT<\/span> <span class=\"hljs-number\">1<\/span>\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;<span class=\"hljs-keyword\">Id<\/span>] = @p1;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-35\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>If you view the <code>EmployeeProfiles<\/code> table, you&#8217;ll see that the phone of the employee is updated:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-36\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Id          Phone                Email                EmployeeId\n----------- -------------------- -------------------- -----------\n1           (408)-555-5555       john.doe@test.com    1<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-36\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Updating in a many-to-many relationship<\/h2>\n\n\n\n<p>The following add two skills to the employee with id 1:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-37\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n<span class=\"hljs-keyword\">var<\/span> employee = context.Employees.Find(<span class=\"hljs-number\">1<\/span>);\n\n<span class=\"hljs-keyword\">if<\/span> (employee <span class=\"hljs-keyword\">is<\/span> not <span class=\"hljs-literal\">null<\/span>)\n{\n    <span class=\"hljs-keyword\">var<\/span> skills = <span class=\"hljs-keyword\">new<\/span> List&lt;Skill&gt;()\n    {\n        <span class=\"hljs-keyword\">new<\/span>() { Title = <span class=\"hljs-string\">\"Sales Planning\"<\/span> },\n        <span class=\"hljs-keyword\">new<\/span>() { Title = <span class=\"hljs-string\">\"Sales Strategy\"<\/span> }\n    };\n\n    <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-keyword\">var<\/span> skill <span class=\"hljs-keyword\">in<\/span> skills)\n    {\n        employee.Skills.Add(skill);\n    }\n\n    context.SaveChanges();\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-37\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>EF Core will insert two new rows into the Skills table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-38\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">Id          Title\n<span class=\"hljs-comment\">----------- --------------------<\/span>\n1           Sales Planning\n2           Sales Strategy<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-38\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>And assign it to the employee with Id 1 by inserting two rows into the <code>EmployeeSkill<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-39\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\">EmployeesId SkillsId\n<span class=\"hljs-comment\">----------- -----------<\/span>\n1           1\n1           2<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-39\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The following shows how to remove the <code>\"Sales Strategy\"<\/code> from employee Id 1 and add a new skill <code>\"Market Trend Analysis\"<\/code> to the employee:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-40\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">using<\/span> HR;\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">static<\/span> System.Console;\n<span class=\"hljs-keyword\">using<\/span> Microsoft.EntityFrameworkCore;\n\n<span class=\"hljs-keyword\">using<\/span> <span class=\"hljs-keyword\">var<\/span> context = <span class=\"hljs-keyword\">new<\/span> HRContext();\n\n<span class=\"hljs-comment\">\/\/ find employee with skills<\/span>\n<span class=\"hljs-keyword\">var<\/span> employee = context.Employees\n                .Include(e =&gt; e.Skills)\n                .Where(e =&gt; e.Id == <span class=\"hljs-number\">1<\/span>)\n                .FirstOrDefault();\n\n<span class=\"hljs-keyword\">if<\/span> (employee <span class=\"hljs-keyword\">is<\/span> not <span class=\"hljs-literal\">null<\/span> &amp;&amp; employee.Skills.Count &gt; <span class=\"hljs-number\">0<\/span>)\n{\n    <span class=\"hljs-comment\">\/\/ remove the \"Sales Strategy\" skill<\/span>\n    <span class=\"hljs-keyword\">var<\/span> skill = employee.Skills.Find(s =&gt; s.Title == <span class=\"hljs-string\">\"Sales Strategy\"<\/span>);\n    <span class=\"hljs-keyword\">if<\/span>(skill <span class=\"hljs-keyword\">is<\/span> not <span class=\"hljs-literal\">null<\/span>) \n    {\n        employee.Skills.Remove(skill);\n    }\n\n    <span class=\"hljs-comment\">\/\/ add \"Market Trend Analysis\" skill<\/span>\n    employee.Skills.Add(<span class=\"hljs-keyword\">new<\/span> Skill() { Title = <span class=\"hljs-string\">\"Market Trend Analysis\"<\/span> });\n}\n\ncontext.SaveChanges();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-40\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>How it works.<\/p>\n\n\n\n<p>First, find the employee with id 1 and also get the skills:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-41\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">var<\/span> employee = context.Employees\n                .Include(e =&gt; e.Skills)\n                .Where(e =&gt; e.Id == <span class=\"hljs-number\">1<\/span>)\n                .FirstOrDefault();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-41\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-42\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-comment\">-- &#91;Parameters=&#91;], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SELECT<\/span> &#91;t].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;t].&#91;DepartmentId], &#91;t].&#91;FirstName], &#91;t].&#91;JoinedDate], &#91;t].&#91;LastName], &#91;t].&#91;Salary], &#91;t0].&#91;EmployeesId], &#91;t0].&#91;SkillsId], &#91;t0].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;t0].&#91;Title]\n<span class=\"hljs-keyword\">FROM<\/span> (\n    <span class=\"hljs-keyword\">SELECT<\/span> TOP(<span class=\"hljs-number\">1<\/span>) &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;e].&#91;DepartmentId], &#91;e].&#91;FirstName], &#91;e].&#91;JoinedDate], &#91;e].&#91;LastName], &#91;e].&#91;Salary]\n    <span class=\"hljs-keyword\">FROM<\/span> &#91;Employees] <span class=\"hljs-keyword\">AS<\/span> &#91;e]\n    <span class=\"hljs-keyword\">WHERE<\/span> &#91;e].&#91;<span class=\"hljs-keyword\">Id<\/span>] = <span class=\"hljs-number\">1<\/span>\n) <span class=\"hljs-keyword\">AS<\/span> &#91;t]\n<span class=\"hljs-keyword\">LEFT<\/span> <span class=\"hljs-keyword\">JOIN<\/span> (\n    <span class=\"hljs-keyword\">SELECT<\/span> &#91;e0].&#91;EmployeesId], &#91;e0].&#91;SkillsId], &#91;s].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;s].&#91;Title]\n    <span class=\"hljs-keyword\">FROM<\/span> &#91;EmployeeSkill] <span class=\"hljs-keyword\">AS<\/span> &#91;e0]\n    <span class=\"hljs-keyword\">INNER<\/span> <span class=\"hljs-keyword\">JOIN<\/span> &#91;Skills] <span class=\"hljs-keyword\">AS<\/span> &#91;s] <span class=\"hljs-keyword\">ON<\/span> &#91;e0].&#91;SkillsId] = &#91;s].&#91;<span class=\"hljs-keyword\">Id<\/span>]\n) <span class=\"hljs-keyword\">AS<\/span> &#91;t0] <span class=\"hljs-keyword\">ON<\/span> &#91;t].&#91;<span class=\"hljs-keyword\">Id<\/span>] = &#91;t0].&#91;EmployeesId]\n<span class=\"hljs-keyword\">ORDER<\/span> <span class=\"hljs-keyword\">BY<\/span> &#91;t].&#91;<span class=\"hljs-keyword\">Id<\/span>], &#91;t0].&#91;EmployeesId], &#91;t0].&#91;SkillsId]<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-42\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Second, disassociate the skill from the employee:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-43\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\"><span class=\"hljs-keyword\">var<\/span> skill = employee.Skills.Find(s =&gt; s.Title == <span class=\"hljs-string\">\"Sales Strategy\"<\/span>);\n<span class=\"hljs-keyword\">if<\/span>(skill <span class=\"hljs-keyword\">is<\/span> not <span class=\"hljs-literal\">null<\/span>) \n{\n    employee.Skills.Remove(skill);\n}<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-43\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-44\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"> <span class=\"hljs-comment\">-- &#91;Parameters=&#91;@p0='1', @p1='2', @p2='Market Trend Analysis' (Nullable = false) (Size = 4000)], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SET<\/span> NOCOUNT <span class=\"hljs-keyword\">ON<\/span>;\n<span class=\"hljs-keyword\">DELETE<\/span> <span class=\"hljs-keyword\">FROM<\/span> &#91;EmployeeSkill]\n<span class=\"hljs-keyword\">OUTPUT<\/span> <span class=\"hljs-number\">1<\/span>\n<span class=\"hljs-keyword\">WHERE<\/span> &#91;EmployeesId] = @p0 <span class=\"hljs-keyword\">AND<\/span> &#91;SkillsId] = @p1;\n\n<span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> &#91;Skills] (&#91;Title])\n<span class=\"hljs-keyword\">OUTPUT<\/span> INSERTED.&#91;<span class=\"hljs-keyword\">Id<\/span>]\n<span class=\"hljs-keyword\">VALUES<\/span> (@p2);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-44\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Skill table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-45\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">Id          Title\n----------- -------------------------\n1           Sales Planning\n2           Sales Strategy\n3           Market Trend Analysis<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-45\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Third, insert a new skill into the <code>Skills<\/code> table and associate the new skill with the employee:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-46\" data-shcb-language-name=\"C#\" data-shcb-language-slug=\"cs\"><span><code class=\"hljs language-cs\">employee.Skills.Add(<span class=\"hljs-keyword\">new<\/span> Skill() { Title = <span class=\"hljs-string\">\"Market Trend Analysis\"<\/span> });<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-46\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C#<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cs<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-47\" data-shcb-language-name=\"SQL (Structured Query Language)\" data-shcb-language-slug=\"sql\"><span><code class=\"hljs language-sql\"><span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> &#91;Skills] (&#91;Title])\n<span class=\"hljs-keyword\">OUTPUT<\/span> INSERTED.&#91;<span class=\"hljs-keyword\">Id<\/span>]\n<span class=\"hljs-keyword\">VALUES<\/span> (@p2);\n\n<span class=\"hljs-comment\">-- &#91;Parameters=&#91;@p3='1', @p4='3'], CommandType='Text', CommandTimeout='30']<\/span>\n<span class=\"hljs-keyword\">SET<\/span> IMPLICIT_TRANSACTIONS <span class=\"hljs-keyword\">OFF<\/span>;\n<span class=\"hljs-keyword\">SET<\/span> NOCOUNT <span class=\"hljs-keyword\">ON<\/span>;\n<span class=\"hljs-keyword\">INSERT<\/span> <span class=\"hljs-keyword\">INTO<\/span> &#91;EmployeeSkill] (&#91;EmployeesId], &#91;SkillsId])\n<span class=\"hljs-keyword\">VALUES<\/span> (@p3, @p4);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-47\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">SQL (Structured Query Language)<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">sql<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p><code>EmployeeSkill<\/code> table:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-48\" data-shcb-language-name=\"plaintext\" data-shcb-language-slug=\"plaintext\"><span><code class=\"hljs language-plaintext\">EmployeesId SkillsId\n----------- -----------\n1           1\n1           3<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-48\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">plaintext<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">plaintext<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>To update an entity, get its instance from the database, modify it, and call the <code>SaveChanges()<\/code> method to update.<\/li>\n<\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Was this tutorial helpful ?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"2254\"\n\t\t\t\tdata-post-url=\"https:\/\/www.csharptutorial.net\/entity-framework-core-tutorial\/ef-core-update\/\"\n\t\t\t\tdata-post-title=\"EF Core Update\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"2254\"\n\t\t\t\tdata-post-url=\"https:\/\/www.csharptutorial.net\/entity-framework-core-tutorial\/ef-core-update\/\"\n\t\t\t\tdata-post-title=\"EF Core Update\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this EF Core Update tutorial, you will learn various ways to update data in database tables via EF Core API<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1970,"menu_order":17,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2254","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/2254","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/comments?post=2254"}],"version-history":[{"count":4,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/2254\/revisions"}],"predecessor-version":[{"id":2265,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/2254\/revisions\/2265"}],"up":[{"embeddable":true,"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/pages\/1970"}],"wp:attachment":[{"href":"https:\/\/www.csharptutorial.net\/wp-json\/wp\/v2\/media?parent=2254"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}