I am migrating an MVC 3 application from EF 4.3 to EF 5. I noticed that EF 5 expects a CreatedOn
column in the __MigrationHistory
table, which does not exist as the migrations were created by an older version.
SELECT TOP (1)
[c].[CreatedOn] AS [CreatedOn]
FROM [dbo].[__MigrationHistory] AS [c]
How do I resolve this issue without wiping my migration history? I am thinking of a query to infer the column's value from the migration name, which is in the following format:
201203111201542_MigrationName
The CreatedOn column is no longer required. We attempt to query from it in order to determine whether we need to drop it. i.e. You are upgrading from 4.3 to 5.
Seems like a thing in EF Code first with migrations enabled, when you upgrade from EF4.* to EF 5.0. And that in combination with MiniProfiler. The table existed in dbo._MigrationHistory under system tables.
You try do a few things:
Here is an example of the seed method to add the CreatedOn column. This column will be deleted each time the context is initialized. The seed method is in the Configuration class of the context.
Here's a workaround I'm using. Personally, I'm OK with pressing the green arrow twice (Start debugging and then Continue), but if you really want it to stop breaking, try this Post Build Event which will remove the MiniProfiler PDB:
UPDATE: if that's too much work for you, I created a NuGet package:
Just like Filip Cornelissen said, it is a thing between MiniProfiler.EF and Entity Framework 5.0.
Solving/hiding the problem is actually easier than you would think. It is only a "debugging problem" as the error you'll get is only happening during the instantiating period (checking for new migrations), and the error is an "SQL Unhandeld Exception".
So, solving this problem is easy:
Go in Visual Studio to your "DEBUG" tab. Hit the "Exceptions" item. In the new dialog, you open the tree "Common Language Runtime Exceptions". Under "System.Data.SqlClient, uncheck both checkboxes after "System.Data.SqlClient.SqlException". Add it, if it ain't there.
And off ya go!
According to Filip Cornelissen answer following script fixes this problem