缺失或无效的主键
我用sqlite数据库创建了我的trac环境,运行得很好。
现在我想直接从数据库获取一些信息,我用C#来实现,使用的是System.Data.SQLite。我遇到的问题是,设计器报错,因为表没有主键。
在出现这个错误后,我发现所有在schema中定义了多个主键的表都没有“转换”成sqlite格式,这些信息丢失了。
我认为问题出在sqlite_backend.py文件上,但我对python不太熟悉,而且我很着急,所以希望你能给我一些快速解决的建议。
更新(多一点细节):
System.Data.SQLite
“支持ADO.NET 3.5实体框架,几乎支持Sql Server的所有实体框架功能,并通过了微软EFQuerySamples演示应用程序99%的测试。”
Visual Studio 2005/2008设计时支持,你可以在服务器资源管理器中添加一个SQLite连接,使用查询设计器创建查询,将表拖放到类型化数据集中等等!
当我把表拖到设计器时,有些表没有成功。这是因为,
“表/视图'main.attachment'没有定义主键,无法推断出有效的主键。这个表/视图已被排除。要使用这个实体,你需要检查你的schema,添加正确的主键,并取消注释。”
问题就是这样,没有实体就没有数据。
更新(更多信息):
我的目标不是改变数据模型。
在trac schema中,表attachment、auth_cookie、enum、node_change、permission、session、session_attribute、ticket_change、ticket_custom都定义了主键。
当我浏览默认的trac.db文件时,这些表并没有按照schema中指定的主键来定义。
我想要一个解决方案来解决trac sqlite数据库这个小“特性”。我觉得在创建后编辑表来添加未创建的主键并不是最好的解决办法。
更新
有什么想法吗?!
1 个回答
你可以看看Trac数据库的API。它是用Python写的,不过你可能可以很容易地用C#重写一遍。至少这会给你一个起点,帮助你找到解决方案。