【问题标题】:Problem with loading collection from datafile从数据文件加载集合的问题
【发布时间】:2019-01-22 17:10:28
【问题描述】:

我在从领域数据库加载我的可观察集合时遇到问题。我创建了一个函数,在其中创建此列表,并且每次列表为空时,它都会创建一个新列表,我的问题是如何设置为使用领域从数据库中读取一次创建的列表?如果有任何帮助让我走上正轨,我将不胜感激:) 提前感谢您的时间:)

ListViewModel 代码:

public PeopleListViewModel(INavigation navigation)
    {
        this.Navigation = navigation;
        realmDb = Realm.GetInstance();
        LoadDb();
    }
    private void LoadDb()
    {
        var _realmDb = Realm.GetInstance();
        Debug.WriteLine("Reading wastes collection");
        PeopleCOllection = _realmDb.All<Person>() as ObservableCollection<Person>;
        if (PersonCollection == null)
        {
            Debug.WriteLine("Collection Empty");
            CreatePeopleList();
        }
        SaveDb();
    }

    private void SaveDb()
    {
        var _realm = Realm.GetInstance();
        _realm.Write(() =>
        {
            foreach (var person in PeopleCollection)
            {
                _realm.Add(person);
                Debug.WriteLine("Person saved into collection!");
            }

        });
    }

【问题讨论】:

    标签: c# xamarin xamarin.forms sql-update realm


    【解决方案1】:

    问题是你不应该这样做:

    PeopleCOllection = _realmDb.All<Person>() as ObservableCollection<Person>;
    

    要从您的数据库结果创建一个可观察的集合,您应该执行以下操作:

    PeopleCOllection = new ObservableCollection<Person>(_realmDb.All<Person>().ToList());
    

    【讨论】:

    • 好吧,当我这样做时,我的应用程序创建了大约 1000 条记录,但我只为此目的创建了 14 个对象,现在每个对象都添加到了领域数据库中。我怎样才能避免这种情况?
    • 抱歉,我没听懂。你的主要目的是什么?看来您正在阅读记录并立即以相同的方法再次保存它们LoadDb
    • 主要目的是加载我的对象,这些对象是在应用程序的第一次午餐时创建的(14 项),并且是这样的。我的问题是他们没有从 db 加载,现在它加载了 1000 次。它复制了它们
    • 好的,我想我明白了。首先尝试完全重新安装您的应用程序,因为可能已经保存了您之前调试的记录。然后,我会将SaveDb 方法放在您的if 语句中,并将条件更改为if (PeopleCOllection.Count == 0),以便在没有记录时调用该操作。
    • ok :) ,它有效 :) 我只是从模拟器重新安装应用程序并按预期工作! :) 谢谢 :)
    猜你喜欢
    • 2021-11-24
    • 2020-12-11
    • 1970-01-01
    • 2017-06-08
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多