共有プロジェクトを使用して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。 (モデルは、docs.efproject.netによると、フィールドの暗黙的な定義を使用していますXamarinでSQLiteを使用したEntityFrameworkCoreは、System.NotImplementedを返します。
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);
}
}
:
public class User
{
public int Id { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public string Notes { get; set; }
}
と非常に単純なデータコンテキスト:私は非常に単純なデータモデルを作成した共有プロジェクトで Idをキーと自動インクリメントとして使用します) データベースを初期化します。まず、プラットフォーム依存のプロパティDatabasePathNameを設定し、次にそれぞれに3つのユーザーアイテムを追加します。これらのレコードの値は、後でリソースから読み込まれることを前提としています。この時点では、リテラルとして入力するだけです。レコードはSaveChanges()メソッドで保存されます(UWPとAndroidの両方が3(保存されたレコード)を返します)。今 、私はWindowsのUWPアプリケーションを実行し、これらのレコードをretriveことであれば:
List<User> users = dbContext.Users.ToList();
、それがあるべきなすべてがあります。私はレコードを読んだので、私はTextBlockコントロールに入れた値を取得します。 Xamarin Androidアプリケーションで同じコードを使用すると、このコードはSystem.NotImplementedException例外をスローします。 私は理由を知らない。アドバイスありがとう。
潜在的に関連するもの:https://github.com/aspnet/EntityFramework/issues/4269 –
この投稿(.../issues/4269)は別の問題と関連していると思います。 –