режим данных: чтение и запись с локальной базой данных c # в wp7 - PullRequest
0 голосов
/ 24 марта 2012

Я создал локальную базу данных с проектом вспомогательного приложения.и развернул его из изолированного хранилища в папку установки, я добавил в каталог проекта действие по созданию контента, добавив существующий элемент.Моя проблема в том, что я хочу вставить данные, но я не знаю, как переместить файл БД, чтобы изолировать хранилище для вставки, и данные необходимо добавить в мой файл .sdf, который также находится в каталоге моего проекта.

1 Ответ

1 голос
/ 24 марта 2012

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 предназначен для заполнения БД некоторыми тестовыми данными после его создания. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...