WP7 - 记忆& LINQ数据库查询

时间:2012-12-10 12:22:18

标签: linq windows-phone-7 memory

有一个更改DB中布尔值的查询。

    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);
        }
    }

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

0 个答案:

没有答案