1

得到一个更改数据库中布尔值的查询。

    private void optFavorit_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
    {
        var opt_query = (from q in db.TableBarcode where q.IdBarcode == selectedItem select q).First();
        Database.Barcode currentBarcode = new Database.Barcode();

        if (opt_query.Favorit == true) 
        {
            currentBarcode.Update(selectedItem, false, opt_query.Scanned, opt_query.Titel, opt_query.Inhalt);
            optFavorit.Content = "Fav. adden";
        }
        else if (opt_query.Favorit == false)
        {
            currentBarcode.Update(selectedItem, true, opt_query.Scanned, opt_query.Titel, opt_query.Inhalt);
            optFavorit.Content = "Fav. entf."; 
        }
    }

并且它有效,除了我执行查询的 XAML 页面之外的所有其他页面上都会显示和更新正确的结果。此外,如果我返回执行查询的页面,它将不允许我再次更改该值。

好像是内存有问题。如果我重新启动完整的应用程序,正确的结果也会显示在我执行查询的页面上,但我只能对每个对象执行 1x 次查询,从这里开始我再次陷入循环。

任何想法?帮助将不胜感激。


编辑:

好吧,即使我不明白有什么大的区别,也找到了解决方案。

        private void optFavorit_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
    {
        // Komischer weise sind 2 Abfragen nötig! Nicht opt_query.Favorit im if verwenden!
        var opt_query = (from q in db.TableBarcode where q.IdBarcode == selectedItem select q).First();
        var isFavo = (from q in db.TableBarcode where q.IdBarcode == selectedItem select q.Favorit).First();
        Database.Barcode currentBarcode = new Database.Barcode();

        if (isFavo == true) 
        {
            currentBarcode.Update(selectedItem, false, opt_query.Scanned, opt_query.Titel, opt_query.Inhalt);
        }
        else if (isFavo == false)
        {
            currentBarcode.Update(selectedItem, true, opt_query.Scanned, opt_query.Titel, opt_query.Inhalt);
        }
    }

也许有人可以解释我,但至少现在可以了:)

4

0 回答 0