【问题标题】:SQLite with RELEASE build of MonoTouch - Can't get PK?带有 MonoTouch 的 RELEASE 版本的 SQLite - 无法获得 PK?
【发布时间】:2013-03-27 07:11:54
【问题描述】:

我一直在使用 Monotouch 并为整个项目使用调试版本。我最近将它更改为发布版本来运行它,它在启动时崩溃了。打开调试符号我发现问题是 SQLite 抛出了一个(伪造的?)异常: “无法更新没有PK的RealConfigData!”

public class RealConfigData
{
    [AutoIncrement, PrimaryKey]
    public int Id { get; set; }
    // .. Other fields
}

public class GameData
{
    [AutoIncrement, PrimaryKey]
    public int Id { get; set; }

    public int Seed {get;set;}
    // .. Other fields
}

当我尝试 .Insert() 数据库中 RealConfigData 没有 PK 的第一个时,我遇到了错误!然而,确实如此。

对于第二个,我得到“找不到'种子'的获取方法”

WTF,似乎在编译 RELEASE 时,元数据不存在,或者更准确地说,不可靠...似乎它找到了 2nd class 的 PK 就好了,但不能用于首先..然后它找不到该字段的吸气剂...这太疯狂了。

而且这段代码在运行调试时工作得很好。

这到底是怎么回事?

我已准备好发布我的 iPhone 应用程序,但 SQLite 在最后一刻对我不利。救命!

==== 这是一个错误的陈述:

更新: 我的另一个没有子类的类可以正常工作!所以它与父/子关系有关。

这不是真的,那个类的异常被吃掉了。

【问题讨论】:

  • 很好奇,您对其进行了编辑以删除我的姓名/签名,并在最后删除了三个点...我说谢谢...这被认为是错误的吗?
  • 是的,这是一个规则,通常是这样。 (但不是我)您是否尝试将 Id 移动到 RealConfigData 而不是基类?
  • 是的,事实上,我完全删除了类层次结构。我注意到一个关于在 iOS 注册类中使用泛型的警告,并寄希望于导致随机崩溃的清理...没有运气。

标签: c# sqlite mono xamarin.ios


【解决方案1】:

想通了……

找到这个:http://forums.xamarin.com/discussion/276/reflection-on-type-in-dll-allways-returns-propertyinfo-canwritefalse

基本上,如果您想对属性进行反射工作,您可以在 iOS 构建设置中关闭链接所有程序集。 (否则,它会删除所有的 setter)

如果我没有偶然发现,这可能需要我很长时间才能弄清楚...... :-(

【讨论】:

  • 你帮我省了很多年的绊脚石!
猜你喜欢
  • 2021-07-06
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多