Dans l'excellente bibliothèque mvvmcross je peux utiliser RIO lier pour empêcher le code illisible:utilisant SQLite net MvvmCross
public INC<String>Title = new NC<String>();
Je peux lire et écrire des valeurs en utilisant Title.Value. Rend les modèles beaucoup plus lisibles. En général, cette propriété s'écrit: private string _title;
public string Title
{
get { return _title; }
set
{
_title = value;
RaisePropertyChanged("Title");
}
}
Mais quand je veux utiliser SQLite-net, ces champs ne peuvent pas être diffusés en continu à la base de données, car ils ne sont pas les types de base avec un getter et setter.
je peux penser à quelques options comment se déplacer que:
- Faire un nouvel objet simple qui est similaire au modèle, mais seulement avec les directs db-champs. Et créez une méthode simple d'importation-exportation statique sur le modèle. Cela pourrait également éviter de lutter avec le code-modèle complexe qui n'a jamais besoin de se rapporter à la base de données réelle.
- Faites en sorte que sqlite-net comprenne la lecture des champs NC. J'ai lu dans le code du mappeur, mais il semblerait que cela va être beaucoup de travail, car il repose sur le getter-setter. Je n'ai pas trouvé un moyen d'insérer un mappage personnalisé dans un type, qui pourrait être générique. Enlevez RIO et mettez simplement tout le code moi-même au lieu de compter sur RIO.
Peut-être quelqu'un a-t-il des conseils?
Les trois de vos options semblent être tout ce que je peux penser aussi. le défi technique de la seconde semble intéressant, mais de «l'app est roi» angle, je serais probablement aller pour le premier. Séparer les champs ViewModel des entités stockées dans le modèle/la base de données peut également vous éviter des maux de tête à long terme. (Tout ce commentaire est une opinion personnelle!) – Stuart