【发布时间】: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 异常。 我不知道为什么。谢谢你的建议。
【问题讨论】:
-
我相信这篇文章(.../issues/4269) 与另一个问题有关。
标签: xamarin xamarin.android xamarin.forms entity-framework-core