在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,然後我將為每個添加三個用戶項。我假設稍後將從Resources中讀取這些記錄的值。在這一點上,我只是輸入文字。記錄由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
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow