我一直在使用 Monotouch 并为整个项目使用调试版本。我最近将其更改为发布版本以运行它,但它在启动时崩溃了。打开调试符号,我发现问题是 SQLite 抛出了一个(伪造的?)异常: “无法更新 RealConfigData 它没有 PK!”
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 就好了,但不能用于首先......然后它找不到该领域的 setter/getter ......这太疯狂了。
并且这段代码在运行调试时工作得很好。
这里到底有什么问题?
我准备发布我的 iPhone 应用程序,但 SQLite 在最后一刻对我不利。帮助!
==== 这是一个错误陈述:
更新: 我的另一个没有子类的类可以正常工作!所以它与父/子关系有关。
这不是真的,那个类的异常被吃掉了。
最佳答案
想通了...
基本上,如果您希望对属性进行反射,您可以在 iOS Build 设置中关闭 Link All Assemblies。 (否则,它会删除所有 setter )
如果我没有偶然发现,这可能需要我很长时间才能弄清楚...... :-(
关于c# - 带有 MonoTouch RELEASE 版本的 SQLite - 无法获得 PK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653493/