SQLite не регистрирует строки в приложении Windows Phone 8.1 с использованием шаблона MVVM, C #

Я разрабатываю приложение для Windows Phone 8.1, это простое приложение для магазина. Я использую шаблон проектирования MVVM, и я использую SQLite для хранения. Когда я пытаюсь вставить несколько строк для выполнения тестов, приложение пропускает процесс InsertOrUpdate и не добавляет их.

Вот мой код в XAML, откуда я вызываю свою VistaModel:

<ListBox Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="2"
         Margin="15,0" ItemsSource="{Binding Products}"
         Background="Black" 
         ScrollViewer.HorizontalScrollBarVisibility="Disabled">

Вызов команды создания базы данных из CodeBehind:

public ListProducts()
{
    this.InitializeComponent();
    ListProductsVM ListProductsOnView = new ListProductsVM();
    if (ListProductsOnView.CreateCommand.CanExecute(null))
    ListProductsOnView.CreateCommand.Execute(null);
}

My ICommand CreateCommand и список продуктов:

public ICommand CreateCommand
{
    get { return this._createCommand; }
}
public ObservableCollection<ProductsVM> Products
{
    get { return this.products; }
    set { this.SetProperty(ref this.products, value); }
}
private async void Create_Executed()
{
    await DAL.CreateDatabase();
}

И с этим вы должны создать базу данных из трех строк:

public static async Task CreateDatabase()
{
    var result = await Checkdatabase();
    if (!result)
    {
        // Create a new connection
        using (var db = DbConnection)
        {
            // Active tracing
            db.TraceListener = new DebugTraceListener();

            // Create the tables if they does not exist
            var prod = db.CreateTable<Product>();
            var sale = db.CreateTable<Sales>();
            var kard = db.CreateTable<Kardex>();
            var infoprod = db.GetMapping(typeof(Product));
            var infosale = db.GetMapping(typeof(Sales));
            var infokard = db.GetMapping(typeof(Kardex));

        // TODO Delete this values
            Product product = new Product();
            product.ID = 1;
            product.Name = "Galletas";
            product.Unit = "Unidad";
            product.Cost = 12.00;
            product.Price = 15.00;
            product.Active = true;

            var i = db.InsertOrReplace(product);

            product = new Product();
            product.ID = 2;
            product.Name = "Leche";
            product.Unit = "Litros";
            product.Cost = 8.00;
            product.Price = 10.00;
            product.Active = false;

            i = db.InsertOrReplace(product);

            product = new Product();
            product.ID = 3;
            product.Name = "Orégano";
            product.Unit = "Unidad";
            product.Cost = 0.20;
            product.Price = 0.30;
            product.Active = true;

            i = db.InsertOrReplace(product);
        }
    }

}

Вы должны добавить все три продукта, но это не так.

1111 Есть идеи, что может быть причиной? Я благодарю всех, кто поддерживает меня заранее.

[ОБНОВЛЕНИЕ] Это то, что появляется в выходных данных:

Executing: insert OR REPLACE into "Product"("ID","Name","Unit","Cost","Price","Active") values (?,?,?,?,?,?)

У меня есть другой аналогичный проект, в котором я получаю те же результаты, но в том, что да, элементы зарегистрированы и отправлены в модель, Процедура, которой я следую, такая же.

0
задан 04.04.2016, 01:06
2 ответа

Помни, что Вин Фоне ты не имеешь доступа к любой папке, поэтому дело в том, что используются классы Storage, чтобы соглашаться на область, где приложение имеет доступ.

Quickstart: Working with поля and folders in Windows Phone 8

ты Был бы должен санкционировать, где помещена эта папка

StorageFolder local = Windows.Storage.ApplicationData.Current.LocalFolder;

, и размещать там файл db. Такие

Как края ты не можешь помещать файл в любой сайт, так как приложение ограничено, где он может, или не соглашаться.

Замечает: используй эту папку в connection string, чтобы снабжать ссылками db.

0
ответ дан 24.11.2019, 14:41
  • 1
    Спасибо за ответ, но я сожалею о том, что говорю, что это не проблема, реализовал asignaci и # 243; n, который ты показываешь в другом м и # 233; совсем заблаговременно, проблема не находится в conexi и # 243; n, так как он действительно создает подмостки (в output показывает creaci и # 243; n подмостков). Как я сказал ранее, проблема коренится в, который отпускает InsertOrReplace. – Adolfo F. Ibarra Landeo 04.04.2016, 01:06

Я предполагаю, что ты работаешь с этим книжным магазином. В этом случае ты должен убеждаться в каких-то вещах:
1. В классе Product ты должен определять PK (Примари Кеи). Мы определяем это как Nullable для того, чтобы каждый раз, когда используется метод InsertOrReplace с идентификацией = 0 не заменил существующую линию:

[PrimaryKey]
public Nullable<int> ID { get; set; }  
  1. Я соглашаюсь с Леандро, в чувстве твоего Path. У тебя есть проблема написания в папке, где помещен твой файл .db
0
ответ дан 24.11.2019, 14:41