In my previous post I talked about general usage of SQL CE database in Mango. In this example I am going to talk about keeping the database schema updated.
For example, I want to add a column to Person table from previous post. I would like to add Notes column with the following definition:
[Column(DbType = "NVarChar(300) NULL")]
public string Notes { get; set; }
Now I am going to use DatabaseSchemaUpdater class to accomplish this. First of all, I have to add using statement to my program in order to invoke extension method on my data context:
using Microsoft.Phone.Data.Linq;
Now, I am going to add some code after the database exists check and add the column as follows:
DatabaseSchemaUpdater db = App.CurrentApp.DB.CreateDatabaseSchemaUpdater();
if (db.DatabaseSchemaVersion == 0)
{
db.AddColumn<Person>("Notes");
db.DatabaseSchemaVersion = 1;
db.Execute();
}
Here is what I am doing here. I am checking for DB version, which I am going to assume responsibility for updating from now on. I am adding notes column called Notes to Person table. Then I am bumping version number for subsequent updates. Lastly, I am firing Execute method to commit my changes. Pretty easy all-and-all. I only wish that Entity Framework code first had similar functionality.