【问题标题】:Xamarin.Forms SQLite CreateTableAsync() return type usageXamarin.Forms SQLite CreateTableAsync() 返回类型用法
【发布时间】:2017-09-07 10:17:43
【问题描述】:

在我调用 CreateTableAsync 方法后,我试图找出我的表在后台发生了什么。
我正在使用 sqlite-net-pcl NuGet(用于 Xamarin.Forms 项目)。

public async Task<int> CreatePartnersTableAsync()
{
    var tablesCreated = await _efContext.CreateTableAsync<Partner>();

    var result = tablesCreated.Results[typeof(Partner)];

    return result;
}

此代码应创建一个新的合作伙伴表(如果它不存在)。如果它确实存在,它应该连接到它。如果我错了,请纠正我。

现在我的问题:

返回的整数是什么意思?
它可以是 1 或 0。

0是否表示表没有创建成功?
...或者这是否意味着表事先存在并且连接未成功连接到该表

1是否表示表已成功创建
...或者这是否意味着该表事先存在并且连接已成功附加到该表

谢谢。

【问题讨论】:

  • 您可能只需进行一些粗略的调试即可确定此问题的答案。据我所知,没有深入的文档可以明确地告诉您结果的确切含义。但是只需创建一些单元测试并自己确定它,它的组合并不多。

标签: sqlite xamarin xamarin.ios xamarin.android xamarin.forms


【解决方案1】:

假设:由于没有具体说明,我假设您使用的是SQLite-net

这是一个已知的bug,已在最新版本中修复。快速查看此pull 请求此feature 会澄清。

使用最新版本,您的代码应该返回 CreateTableResult 枚举 - 这应该适当地指示表是否已成功创建。

编辑 1

看来此功能尚未发布。您将不得不等待下一个稳定版本 (> 1.4.118),或者使用 beta 版本 1.5.xxx-beta。

此时,如果没有错误修复/功能,则返回值无效。

编辑 2

澄清一下,即使进行了更新,它也会告诉您该表是否已经存在。有细微的差别。如果在创建/迁移过程中遇到错误,我希望会抛出异常。

【讨论】:

  • 您的假设几乎是正确的-我使用的是 sqlite-net-pcl-抱歉没有提及,我会更新我的问题,以便清楚。我正在使用最新的稳定版本。然而,CreateTableResult 是一个只有一个属性的类——结果。它是 Dictionary 类型,据我所知没有枚举。
  • 我猜它还没有发布 - 如果没有,根据错误 - 我猜它总是会返回 1。让我看看我是否可以启动一个快速项目进行测试。
  • 换句话说 - 现在没有办法告诉(查看返回 int 的 CreateTableAsync)表是成功创建还是发生了什么。对吗?
  • 即使有更新 - 它会告诉你表是否已经存在。有细微的差别。如果在创建/迁移过程中遇到错误,我希望会抛出异常。
猜你喜欢
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 1970-01-01
  • 2023-04-03
  • 2018-10-12
相关资源
最近更新 更多