【问题标题】:EntityFrameworkCore with SQLite on Xamarin returns System.NotImplementedXamarin 上带有 SQLite 的 EntityFrameworkCore 返回 System.NotImplemented
【发布时间】:2016-08-26 19:08:21
【问题描述】:

我使用共享项目创建了 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 xamarin.android xamarin.forms entity-framework-core


【解决方案1】:

Xamarin 的 .NET Standard 实现仍然存在一些已知问题。有关详细信息,请参阅aspnet/Microsoft.Data.Sqlite#255。随着 Xamarin 的出现,我们会及时更新该问题。

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2020-09-01
    • 1970-01-01
    • 2016-07-03
    • 2017-07-12
    • 1970-01-01
    • 2023-04-04
    • 2021-02-23
    • 2021-09-25
    相关资源
    最近更新 更多