MvvmCrossでは、別のアプローチでこれに取り組みました。
SQLiteのネイティブポートを利用したかったので、 https://github.com/praeclarum/sqlite-net/のSQLite-netORMラッパーを使用したいと思いました。
したがって、PCLだけを使用する代わりに、次のことを行いました。
コードレベルでは、クライアントアプリは次のようなプラグインを使用できます。
ビジネスロジックライブラリ(PCLまたはプラットフォーム固有)では、コードでモデルオブジェクトを定義できます。
public class ListItem
{
    [PrimaryKey, AutoIncrement]
    public int Id { get; set; }
    public string Name { get; set; }
    public string WhenCreated { get; set; }
}
起動時にアプリは以下を呼び出すことができます:
  Cirrious.MvvmCross.Plugins.Sqlite.PluginLoader.Instance.EnsureLoaded();
  var factory = this.GetService<ISQLiteConnectionFactory>();
  var connection = factory.Create("SimpleList");
  connection.CreateTable<ListItem>();
次に、操作中に、コードは次のようなことを実行できます。
  connection.Insert(new ListItem() { Name = TextToAdd, WhenCreated = DateTime.Now.ToString("HH:mm:ss ddd MMM yyyy") });
また
 public ListItem this[int index]
 {
     get { return _connection.Table<ListItem>().OrderBy(_sortOrder).Skip(index).FirstOrDefault(); }
 }
UI固有のコードは、プラグインのプラットフォーム固有の拡張機能を参照し、そのプラットフォーム固有の実装をIoC/DIシステムに挿入する必要があります。Droidではこれは本当に簡単です(MonoDroidは実行時にAssembly.Loadをサポートしているため)が、他のプラットフォームでは、これには次のような「ボイラープレート」コードが少し含まれます。
    protected override void AddPluginsLoaders(Cirrious.MvvmCross.Platform.MvxLoaderPluginRegistry loaders)
    {
        loaders.AddConventionalPlugin<Cirrious.MvvmCross.Plugins.Sqlite.WinRT.Plugin>();
        base.AddPluginsLoaders(loaders);
    }
ノート:
- 現在のMvvmCrossリポジトリにはWinRTとMonoDroidSQLiteラッパーのみが含まれていますが、他のラッパー(WP *とMonoTouch)は簡単に構築できるはずです(他の人がそれらを構築したことは知っていますが、まだ貢献していません) 
- 現在のMvvmCrossリポジトリには、WinRTの同期(非同期ではない)インターフェイスのみが含まれていますが、プライベートプロジェクトでこれを拡張したと言われていることもあります。 
- 私は現在、プラグインをより広く使用できるように、このプラグイン構造をMvvmCrossの外部にプルするプロセスを進めています。うまくいけば、クリスマスの前にこれに関する発表を期待してください。 
- MvvmCrossのプラグインの詳細については、https: //speakerdeck.com/cirrious/mvvmcross-going-portableを参照してください。