XamarinでSQLiteを使用するEntityFrameworkCoreはSystem.NotImplementedを返します

entity-framework-core xamarin xamarin.android xamarin.forms

質問

私はXamarin.Forms Windows UWPとAndroidプロジェクトを共有プロジェクトで作成しました。両方のバージョン(UWPとAndroid)には、最新の安定したNuGetパッケージ(Microsoft.EntityFrameworkバージョン1.0.0、Microsoft.EntityFramework.Sqliteバージョン1.0.0、Xamarin.Forms 2.3.1.114)がインポートされました。共有プロジェクトで私は非常に単純なデータモデルを作成しました:

public class User
{
  public int Id { get; set; }
  public string UserName { get; set; }
  public string Password { get; set; }
  public string Notes { get; set; }
}

非常にシンプルなデータ・コンテキスト:

public class DataDbContext: DbContext
{
  public static string DatabasePathName;

  public DataDbContext()
      : base()
  {
  }

  public DataDbContext(DbContextOptions options)
      : base(options)
  {
  }

  public DbSet<User> Users { get; set; }

  protected override void OnConfiguring(
    DbContextOptionsBuilder optionsBuilder)
  {
    optionsBuilder.UseSqlite(
      String.Format("Filename={0}", DataDbContext.DatabasePathName));

    base.OnConfiguring(optionsBuilder);
  }
}

(モデルは、docs.efproject.netに従って、キーとしてのフィールドIDの暗黙的な定義とオートインクリメントを使用します)。次に、データベースを初期化します。まず、プラットフォーム依存のプロパティDatabasePathNameを設定し、次に、 。これらのレコードの値は、後でリソースから読み込まれることを前提としています。この時点では、リテラルとして入力するだけです。レコードはSaveChanges()メソッドで保存されます(UWPとAndroidの両方が3(保存されたレコード)を返します)。今、私がWindows UWPアプリケーションを実行し、これらのレコードを検索すると、次のようになります。

List<User> users = dbContext.Users.ToList();

すべてが本来あるべきものです。私はレコードを読んだので、私はTextBlockコントロールに入れた値を取得します。しかし、XamarinのAndroidアプリケーションで同じコードを使用すると、このコードはSystem.NotImplementedException例外をスローします。どうしてか分かりません。アドバイスありがとう。

受け入れられた回答

Xamarinの.NET標準の実装には、まだいくつかの既知の問題があります。詳細については、 aspnet / Microsoft.Data.Sqlite#255を参照してください。 Xamarinが点灯するにつれて、その問題を最新の状態に保ちます。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ