2012-03-24 15 views
0

我用助手應用程序項目創建了一個本地數據庫。並將其從隔離存儲部署到安裝文件夾,我通過添加現有項目添加到帶有內容構建操作的項目目錄。我的問題是我想插入數據,但我不知道如何移動數據庫文件來隔離存儲插入和數據必須添加到我的項目目錄中找到的.sdf文件也。數據模式:使用cp本地數據庫讀寫wp7

+1

與Alex發佈的sqlce工具箱一起使用非常方便。它會爲你生成dbml並添加一個createifnotexist方法。 http://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1/ – 2012-03-24 20:09:23

+0

但我是爲SQL服務器,是不是不同於本地數據庫在wp7中使用?! – 2012-03-24 20:47:59

+0

這是用於在手機上運行的sql ce。生成代碼! - 在當前項目中生成Windows Phone LINQ to SQL DataContext類(.cs或.vb) – 2012-03-24 21:39:09

回答

1

Souphia, 在學習使用WP時,我編寫了一個跟蹤任務的簡單應用程序。 該應用程序的一個版本將所有任務數據存儲在手機上的Sql中。 您可以閱讀後並下載所有的代碼,應用程序在這裏:

http://www.ritzcovan.com/2012/02/building-a-simple-windows-phone-app-part-3/

但是,這裏是一些從該項目代碼:

首先,我們有裝飾用的模型類適當的屬性:

[Table] 
public class Task : INotifyPropertyChanged, INotifyPropertyChanging 
{ 
    [Column(IsDbGenerated = false, IsPrimaryKey = true, CanBeNull = false)] 
    public string Id 
    { 
     get { return _id; } 
     set 
     { 
      NotifyPropertyChanging("Id"); 
      _id = value; 
      NotifyPropertyChanging("Id"); 
     } 
    } 

    [Column] 
    public string Name 
    { 
     get { return _name; } 
     set 
     { 
      NotifyPropertyChanging("Name"); 
      _name = value; 
      NotifyPropertyChanged("Name"); 
     } 
    } 

    [Column] 
    public string Category 
    { 
     get { return _category; } 
     set 
     { 
      NotifyPropertyChanging("Category"); 
      _category = value; 
      NotifyPropertyChanged("Category"); 
     } 
    } 

    [Column] 
    public DateTime? DueDate 
    { 
     get { return _dueDate; } 
     set 
     { 
      NotifyPropertyChanging("DueDate"); 
      _dueDate = value; 
      NotifyPropertyChanged("DueDate"); 
     } 
    } 

    [Column] 
    public DateTime? CreateDate 
    { 
     get { return _createDate; } 
     set 
     { 
      NotifyPropertyChanging("CreateDate"); 
      _createDate = value; 
      NotifyPropertyChanged("CreateDate"); 
     } 
    } 

    [Column] 
    public bool IsComplete 
    { 
     get { return _isComplete; } 
     set 
     { 
      NotifyPropertyChanging("IsComplete"); 
      _isComplete = value; 
      NotifyPropertyChanged("IsComplete"); 
     } 
    } 

    [Column(IsVersion = true)] private Binary _version; 

    private string _id; 
    private bool _isComplete; 
    private DateTime? _createDate; 
    private DateTime? _dueDate; 
    private string _name; 
    private string _category; 
    public event PropertyChangedEventHandler PropertyChanged; 
    public event PropertyChangingEventHandler PropertyChanging; 

    public void NotifyPropertyChanged(string property) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, new PropertyChangedEventArgs(property)); 
    } 

    public void NotifyPropertyChanging(string property) 
    { 
     if (PropertyChanging != null) 
      PropertyChanging(this, new PropertyChangingEventArgs(property)); 
    } 
} 

在app.xaml.cs構造函數中,我有以下幾點:

TaskMasterDataContext = new TaskMasterDataContext(); 

if (!TaskMasterDataContext.DatabaseExists()) 
{ 
    TaskMasterDataContext.CreateDatabase(); 
    DatabaseHelper.SetupDatabase(TaskMasterDataContext); 
} 

這裏是TaskMasterDataContext.cs代碼

public class TaskMasterDataContext : DataContext 
    { 
     public TaskMasterDataContext() : base("Data Source=isostore:/TaskMasterData.sdf") 
     { 
     } 
     public Table<Task> Tasks; 
    } 


    public static class DatabaseHelper 
    { 
     public static void SetupDatabase(TaskMasterDataContext dataContext) 
     { 
      string category = string.Empty; 
      var tasks = new List<Task>(); 
      for (int i = 0; i < 20; i++) 
      { 
       tasks.Add(new Task() 
           { 
            Id = System.Guid.NewGuid().ToString(), 
            Category = GetCategoryString(i), 
            CreateDate = DateTime.Now, 
            DueDate = DateTime.Now.AddDays(new Random().Next(1, 30)), 
            IsComplete = false, 
            Name = String.Format("{0} Task # {1}", GetCategoryString(i), i) 
           }); 
      } 
      dataContext.Tasks.InsertAllOnSubmit(tasks); 
      dataContext.SubmitChanges(); 
     } 

     private static string GetCategoryString(int i) 
     { 
      if (i%2 == 0) 
       return "home"; 

      if (i%3 == 0) 
       return "personal"; 

      return "work"; 
     } 
    } 

的DatabaseHelper類是隻是爲了填充DB其創建後一些測試數據。 我希望這可以幫助。