Windows phone 7 数据模式:在wp7中使用c#本地数据库进行读写
我用helper应用程序项目创建了一个本地数据库。并将其从隔离存储部署到安装文件夹,我通过添加现有项将内容构建操作添加到项目目录中。我的问题是我想插入数据,但我不知道如何移动db文件以隔离要插入的存储,数据必须添加到我的.sdf文件中,该文件也位于我的项目目录中。Souphia, 在学习使用WP时,我编写了一个跟踪任务的简单应用程序。 该应用程序的一个版本将所有任务数据存储在手机上的Sql中。 您可以在此处阅读文章并下载应用程序的所有代码: 但是,下面是该项目的一些代码: 首先,我们用适当的属性装饰模型类:Windows phone 7 数据模式:在wp7中使用c#本地数据库进行读写,windows-phone-7,windows-phone-7.1,Windows Phone 7,Windows Phone 7.1,我用helper应用程序项目创建了一个本地数据库。并将其从隔离存储部署到安装文件夹,我通过添加现有项将内容构建操作添加到项目目录中。我的问题是我想插入数据,但我不知道如何移动db文件以隔离要插入的存储,数据必须添加到我的.sdf文件中,该文件也位于我的项目目录中。Souphia, 在学习使用WP时,我编写了一个跟踪任务的简单应用程序。 该应用程序的一个版本将所有任务数据存储在手机上的Sql中。 您可以在此处阅读文章并下载应用程序的所有代码: 但是,下面是该项目的一些代码: 首先,我们用适当的属
[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";
}
}
公共类TaskMasterDataContext:DataContext
{
public TaskMasterDataContext():base(“数据源=isostore:/TaskMasterData.sdf”)
{
}
公共表任务;
}
公共静态类DatabaseHelper
{
公共静态void设置数据库(TaskMasterDataContext dataContext)
{
字符串类别=string.Empty;
var tasks=新列表();
对于(int i=0;i<20;i++)
{
tasks.Add(新任务()
{
Id=System.Guid.NewGuid().ToString(),
类别=GetCategoryString(i),
CreateDate=DateTime。现在,
DueDate=DateTime.Now.AddDays(new Random().Next(1,30)),
IsComplete=false,
Name=String.Format(“{0}任务{1}”,GetCategoryString(i),i)
});
}
dataContext.Tasks.InsertAllOnSubmit(任务);
dataContext.SubmitChanges();
}
私有静态字符串GetCategoryString(int i)
{
如果(i%2==0)
返回“家”;
如果(i%3==0)
返回“个人”;
返回“工作”;
}
}
DatabaseHelper类只是在数据库创建之后用一些测试数据填充数据库。
我希望这会有所帮助。除了Alex发布的sqlce工具箱外,它还非常方便。它将为您生成dbml并添加createifnotexist方法。但我是针对sql server的,和wp7中使用的本地数据库没有区别吗?!它是用于在电话上运行的sql ce的。生成代码!-在当前项目中生成Windows Phone LINQ到SQL DataContext类(.cs或.vb)