0

共有プロジェクトを使用して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例外をスローします。 私は理由を知らない。アドバイスありがとう。

+0

潜在的に関連するもの:https://github.com/aspnet/EntityFramework/issues/4269 –

+0

この投稿(.../issues/4269)は別の問題と関連していると思います。 –

答えて

0

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

関連する問題