I.Introduction
Ở những bài trước mình đã chia sẽ những kiến thức cơ bản để xây dựng một ứng dụng Local Database kết hợp với mô hình MVVM.
Nhưng một vấn đề đặt ra là khi đã viết được ứng dụng rồi, và bây giờ có sự thay đổi cấu trúc ở phía Local Database thì chúng ta giải quyết như thế nào ?????
Trong bài viết này mình xin chia sẻ cách cơ bản để cập nhật Database chema trong ứng dụng Local Database.
II. Fundamental
Về cơ bản khi ứng dụng chúng ta đã được tạo thì lúc đó mặc định version của Database sẽ là 1. và sau mỗi lần cập nhật thì version này sẽ thay đổi.
Microsoft cung cấp một giải pháp khá đơn giản để chúng ta thực hiện việc thay đổi cấu trúc Database thông qua lớp DatabaseSchemaUpdater của namespace Microsoft.Phone.Data.Linq do đó khi sử dụng các bạn nhớ khai báo namespace này nhé.
Để thay đổi Database schema thì các bạn phải biết được phiên bản Database hiện tại của mình la 2 phiên bản mấy ! rồi từ đó cập nhật Database.
Về lý thuyết là vậy. Thực tế để cập nhật Local Database trong Windows Phone trước tiên chúng ta vào App.xaml.cs và tạo một thuộc tính static là APP_VERSION. thuộc tính này có kiểu dữ liệu là int và có giá trị ban đầu lớn hơn Verson cũ của database.
kế tiếp chúng ta vào hàm khởi tạo của lớp App và kiểm tra sự tồn tại của Database, nếu như database đã tồn tại thì mới cho phép cập nhật.
Dưới đây là một ví dụ đơn giản của mình
App.connectionString = "Data Source=isoStore:/Moment.sdf";
using (MomentDataContext db = new MomentDataContext(connectionString))
{
if (!db.DatabaseExists())
{
db.CreateDatabase();
db.SubmitChanges();
}
else
{
try
{
DatabaseSchemaUpdater dbUpdater = db.CreateDatabaseSchemaUpdater();
if (dbUpdater.DatabaseSchemaVersion < APP_VERSION)
{
dbUpdater.AddColumn<Moment>("Note");
dbUpdater.AddColumn<Moment>("Record");
dbUpdater.DatabaseSchemaVersion = 2;
dbUpdater.Execute();
}
}
catch
{
}
}
}
Hy vọng bài viết sẽ mang thông tin hữu ích cho các bạn