0

在优秀的 mvvmcross-library 中,我可以使用 RIO 绑定来防止不可读的代码:

public INC<String>Title = new NC<String>();

然后我可以使用 Title.Value 读取和写入值。使模型更具可读性。

通常,这个属性会写成: private string _title;

    public string Title
    {
        get { return _title; }
        set
        {
            _title = value;
            RaisePropertyChanged("Title");
        }
    }

但是当我想使用 sqlite-net 时,这些字段无法流式传输到数据库,因为它们不是带有 getter 和 setter 的基本类型。

我可以想到一些解决方法:

  1. 创建一个类似于模型的新简单对象,但仅使用直接 db-fields。并在模型上创建一个简单的导入导出静态方法。这也可以防止与永远不需要与实际数据库相关的复杂模型代码作斗争。
  2. 让 sqlite-net 理解阅读 NC 字段。我阅读了映射器的代码,但看起来这将是很多工作,因为它依赖于 getter-setter。我没有找到将自定义映射插入类型的方法,这可能是通用的。
  3. 删除 RIO 并自己输入所有代码,而不是依赖 RIO。

也许有人有一些建议?

4

1 回答 1

1

谢谢斯图尔特。这正是我的想法,所以我确实是这样实现的:我的(DB)模型不包含 RIO。只有我的视图模型会这样做,并且它们引用了与 DB 兼容的模型。

因此,为了后代,以下提示: - 不要在需要数据库支持的模型中使用 RIO。- 您的视图模型中的参考模型。在绑定中,您可以使用 . (点)来引用这个模型。

这使它们很好地分开。这也给了你另一个好处:如果你需要重用一个模型(因为同一个对象可能会在屏幕上显示两次),但是在不同的情况下,处理这种情况来找到这个已经实例化的模型要容易得多。

于 2013-08-12T08:46:20.607 回答