c# - 带有 MonoTouch RELEASE 版本的 SQLite - 无法获得 PK?

标签 c# sqlite mono xamarin.ios

我一直在使用 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 在最后一刻对我不利。帮助!

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

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

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

最佳答案

想通了...

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

基本上,如果您希望对属性进行反射,您可以在 iOS Build 设置中关闭 Link All Assemblies。 (否则,它会删除所有 setter )

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

关于c# - 带有 MonoTouch RELEASE 版本的 SQLite - 无法获得 PK?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15653493/

相关文章:

c# - Linq 查询 XML 以选择子节点的多个元素

C# byte[] 子串? (设计)

android - 多个 order by 和 null 值使用下一个字段排序,而不是第一个或最后一个

iphone - 在 iPhone 中集成 sqlite

android - 查找 String[] 是否包含 Room 数据库 Android 中的 String

mono - umbraco可以在单声道上工作吗?

asynchronous - Mono 下的 F# 任务并行性不会 "appear"并行执行

c# - 单声道多处理性能问题

c# - 如何从 C# 解密 ruby​​ 中的 RijandelManaged?

c# - 安排机器唤醒