得到一个更改数据库中布尔值的查询。
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);
}
}
也许有人可以解释我,但至少现在可以了:)