Entity Framework: Update-Database Migrates the Wrong DB

Recently I made the switch from using Visual Studio 2015 to using Visual Studio 2017. For the most part the transition was easy. However, I ran into an issue with Entity Framework updating the wrong database. I’m posting the solution here so I don’t forget ūüôā

TL:DR
If you are experiencing issues with Entity Framework then check that your startup project is the correct one.

EF Update-Database Is Not Working

My current setup involves using a local SQL Server Express database. I check the database via SQL Server Management Studio (ManStu) when I run Update-Database to ensure my changes take place. When I run Update-Database from Visual Studio 2015 the changes are reflected in the database. When I run Update-Database from Visual Studio 2017 the changes are not reflected in the database.

Why does Update-Database work correctly in Visual Studio 2015 but not correctly in Visual Studio 2017? Why does Visual Studio 2017 tell me that the changes were applied successfully?

I decided to take a look at the output of Update-Database -Verbose to see if it yielded any helpful information. There I saw:

Target database is: 'MySpecialDB' (DataSource: (localdb)\v11.0, Provider: System.Data.SqlClient, Origin: Convention).

Entity Framework was using (localdb) and not the SQL Server Express database I setup in the app.config. That explains why the changes were applied successfully. However, why was Entity Framework using the wrong database?

The Not So Thrilling Simple Solution

I pursued a number of different routes looking for the solution to this issue. In the end the solution is so simple. The wrong startup project was selected. That’s it. In Visual Studio 2015 I was using a different startup project. In Visual Studio 2017 I never setup a startup project and so one was selected automatically.

As it turns out Entity Framework pulls meaningful information (like database connection information) out of the startup project. The fact that I had the wrong startup project selected in Visual Studio 2017 was the reason why my Entity Framework Update-Database commands were not working the way I expected.

So, lesson learned, if you are experiencing issues with Entity Framework then check your startup project. It could be that you have the wrong startup project selected ūüôā

Hide the Action Center Icon in Windows 10

It’s the little things in life that annoy me. Things like Microsoft’s Edge browser icon re-appearing on my taskbar. Or, when Windows decides to update just before a meeting.¬†I find these kinds of things to be very annoying. That’s why I was a smidgen irked when the Windows 10 Action Center icon popped up on my taskbar and showed no signs of leaving peacefully.

For those of you who do not know what the Action Center Icon in Windows 10 is then allow Leonardo to enlighten you.

Windows 10 Action Center Icon
aRGGG win10 icon, I’ll kill you!

And only now, at the end, do you see your mistake.

Remove the Action Center Icon

Now that we are all aware of the horribleness that is this awful Action Center icon we can set off on our quest to destr… err remove it.

  1. Open the Windows menu
  2. Search for Turn system icons on or off **
  3.  Find the Action Center icon.
    1. If you are not sure where the Action Center icon is, let the WoW splash screen show you.

      Turn system icons on or off list
      DESTROY…
  4. Turn if off
  5. Rejoice in the boundless fruits of your labor.

**Alternatively, if you are old school and hate things like convenience, you can navigate to this setting section via the Control Panel. So hop on in your Conestoga Wagon and navigate to Control Panel > Appearance and Personalization > Taskbar and Navigation > Turn system icons on or off.

SQL Server – Search Tables for a Column

You can use the following SQL to find all tables with a specific column name within your SQLServer database.

SELECT TABLE_NAME, COLUMN_NAME
FROM YourDbName.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'YourColumnName'
ORDER BY COLUMN_NAME

Or, use the LIKE() method if you don’t know your specific column name. If I use the LIKE() method I try to only throw the wildcard at the end of the string… it performs a bit better that way.

SELECT TABLE_NAME, COLUMN_NAME
FROM YourDbName.INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = LIKE('SomeColumn%')
ORDER BY COLUMN_NAME

Figured I’d post this here because I’ll probably forget and want to know again in the future.

Specify Name and Port for Website Project in IISExpress

When using IISExpress to develop a Website project it is nice to have a specific machine name and port to refer to.

You can specify the machine name and port by editing the binding in the IISExpress applicationhost.config file. The following information was gleaned from this answer on StackOverflow.

  1. Open your applicationhost.config file. It most probably will be %userprofile%\Documents\IISExpress\config\applicationhost.config, but inspect the output from iisexpress.exe to be sure.
  2. Locate your WebSite entry and add following binding with your machine name.
         <binding protocol="http" bindingInformation=":50333:your-machine-name" />
    
  3. Restart IIS Express

I actually specified my machine name as well as the local domain.

bindingInformation=":8013:my-machine-name.my-domain.local"

This seems to be working just fine for me. If you are wanting to actually share that url for others to access (maybe within your own work network) you might have to run this in a administrator command prompt as specified in this StackOverflow answer:

netsh http add urlacl url=http://vaidesg:8080/ user=everyone

 

My Computer Updated Itself to Windows 8.1 Today

The Windows 8.1 experience that I’ve shared below is just that, an experience. Windows 8.1 itself is fine, I’d prefer if it gave me more customization options. Personally, I’d prefer not having a Windows button (I’ve got a windows key on my keyboard). Personally I’d prefer full screen search over the tiny search bar in 8.1. So Microsoft would’ve done better to provide personalization options, not to choose for you.

And I’m a little ticked off.

First off, my computer updated itself without my knowledge nor my permission. It had asked me a few times, to which my answer was always “Not Right Now”. However, it decided, of it’s own accord, that it would update itself. That kind of behavior is not acceptable.

In addition to updating itself to Windows 8.1 it also decided that it would be helpful and download/setup/install a bunch of apps for me. Once again it did so without asking for my permission. It then decided that it wanted me to create a special Microsoft Account to use my personal computer, Luckily, I found a way around that (using my smartphone, because my computer wouldn’t let me use it).

When I finally got into the computer I discovered that it had changed a number of things that I did not tell it to.

  1. It Rearranged my taskbar icons.
  2. It added a Start Button
  3. It threw Internet Explorer onto my taskbar
  4. It changed the way I search for things in the start menu.
  5. It changed the way my start menu looked.

All in all, I wasn’t that happy with the way Windows 8.1 decided to force itself upon my machine.

A few tips for the future.

  1. Do not update my machine without asking me
    1. If I tell you to wait, then you better wait and you better not update without me.
  2. Do not *force* me to make a Microsoft Account to use my own computer.
    1. Make the fact that it’s *optional* more clear.
  3. DON’T CHANGE MY STUFF
    1. I have icons on my taskbar for a reason, don’t mess with them
    2. Don’t try to trick me to use IE by placing it in prominent places on my machine
    3. Don’t add things without asking me
    4. Don’t change things without asking me
  4. It disabled my PS3 controller(that I spent a long time trying to get to work on my computer).

This whole process would’ve been a whole lot less frustrating if it allowed for more input from the user. It should’ve told me about all the changes it wanted to do (add IE, add the Windows button, modify the Startmenu), and more importantly, it should’ve given me the option to keep things the way they were.

So… now I proceed to search the internet for ways to make my computer the way I like it again. Which makes me even more frustrated.

**UPDATE**

It appears there is no built in way to turn off the Windows button in the taskbar. There is also no way to make my Start Screen searches full screen by default anymore. (Ok, so if I actually click the apps view, and then search, the search is the way I want it to work). The only way to get these things back to the way I like them is by re-installing windows 8, which is pretty annoying. All in all I’m really sad with the way this whole update happened.

Note:

Kaira mentioned that she’s been postponing the update by doing the following. Maybe that will help some of you.

What I do is, when the prompt asking to restart at a time of my choosing sets, set it to as late as it goes, then rush over to the Windows Store. Click Updates (top right) and you’ll see it downloading 8.1. Click that and something at the bottom comes up, and you can select Cancel.