In Code First Approach When we declare properties in
classes and run the application then its automatically create DataBase Tables
As we done it in previous tutorial.
Now the problem is that if we change in parameters and try to run this application then it gives
error. So How to handle this problem. In this tutorial we will solve this type
of problem.
In earlier tutorial we create a class of employee with
some parameters those are define like that
namespace WindowsFormsApplication1
{
public class Employee
{
public int
EmployeeId { get; set; }
public string
FirstName { get; set; }
public string
LastName { get; set; }
public DateTime?
DateOfBirth { get; set; }
}}
Now i want to add a new properties in this Employee
class as “ EmployeePlace” then this
class will show like that
namespace WindowsFormsApplication1
{
public class Employee
{
public int
EmployeeId { get; set; }
public string
FirstName { get; set; }
public string
LastName { get; set; }
public DateTime?
DateOfBirth { get; set; }
public string
EmployeePlace { get; set; }
}}
Now if we run this application then this application will
give error that database and the properties define in class is not match or not
synchronize.
The
model backing the 'EmployeeDBContext' context (Parameter changed )has changed
since the database was created.
This is because the Employee class has
changed since the database was created. It means Database and the modal(Employee.cs class) is not synchronize,
To check that is class change or not EF uses __MigrationHistory table
that is auto-generated.
_MigrationHistory is a table created by Code First Migrations to store information about migrations applied to the database.
To remove this error, we have to inform to EF that some
changes has done. For this we have to add a Global.Asax.
When you open this class then
there are some method already predefine methods there we have to give definition.
There you add System.Data.Entity namespace.
Public Application_Start(object sender , Event
Args e)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<EmployeeDBContext>());
}
You can write it in different
way
Public Application_Start(object sender , Event
Args e)
{
Database.SetInitializer(new DropCreateDatabaseAlways<EmployeeDBContext>());
}
Now you run your application
this will run successfully.
No comments:
Post a Comment