首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单点触控中使用CoolStorage的映射问题

在单点触控中使用CoolStorage的映射问题
EN

Stack Overflow用户
提问于 2012-11-07 21:39:02
回答 1查看 276关注 0票数 1

我正在尝试使用Monotouch的Vici CoolStorage,但似乎在人际关系方面遇到了问题。使用以下代码,我尝试使用单个Survey填充一个数据库,然后使用for循环生成一个包含5个问题的列表。

当我运行它时,似乎在将问题映射到数据库中的调查中出现了问题,所以如果有人能告诉我我错过了什么,将不胜感激!给出的错误是"Vici.CoolStorage.CSException:无法读取关系调查“。

代码语言:javascript
复制
[MapTo("Survey")]
public class Survey : CSObject<Survey, int>
{
    public int SurveyId { get { return (int)GetField ("SurveyId"); } }
    public string Title { get { return (string)GetField ("Title"); } set { SetField ("Title", value); } }
    public DateTime DateCreated { get { return (DateTime)GetField ("DateCreated"); } set { SetField ("DateCreated", value); } }
    public bool IsCurrent { get { return (bool)GetField ("IsCurrent"); } set { SetField ("IsCurrent", value); } }

    [OneToMany(LocalKey="SurveyId", ForeignKey="QuestionId")]
    public CSList<Question> Questions { get { return (CSList<Question>)GetField("Questions"); } }

}

[MapTo("Question")]
public class Question : CSObject<Question, int>
{
    public int QuestionId { get { return (int)GetField ("QuestionId"); } }
    public string Text { get { return (string)GetField ("Text"); } set { SetField ("Text", value); } }
    public int SurveyId { get { return (int)GetField ("SurveyId"); } }

    [ManyToOne(LocalKey="QuestionId", ForeignKey="SurveyId")]
    public Survey Survey { get { return (Survey)GetField ("Survey"); } set { SetField ("Survey", value); } }
}

数据库表

代码语言:javascript
复制
CSDatabase.ExecuteNonQuery (@"CREATE TABLE Survey (SurveyId INTEGER PRIMARY KEY AUTOINCREMENT, Title TEXT(100) NOT NULL, DateCreated TEXT(50) NOT NULL, IsCurrent INTEGER)");
CSDatabase.ExecuteNonQuery (@"CREATE TABLE Question (QuestionId INTEGER PRIMARY KEY AUTOINCREMENT, Text TEXT(100) NOT NULL, SurveyId INTEGER REFERENCES Survey(SurveyId))");

循环

代码语言:javascript
复制
for (int i = 1; i <= 10; i++) 
{
            Question q = Question.New ();
            q.Text = String.Format ("Question {0}", i);
            survey.Questions.Add (q);
}
survey.Save();
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-07 21:50:37

您尚未在映射字段中链接正确的外键。这些关系应该声明为:

代码语言:javascript
复制
[OneToMany(LocalKey="SurveyId", ForeignKey="SurveyId")]
public CSList<Question> Questions ...

代码语言:javascript
复制
[ManyToOne(LocalKey="SurveyId", ForeignKey="SurveyId")]
public Survey Survey...
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13270964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档