gpt4 book ai didi

c# - 在 Monotouch 中使用 CoolStorage 的映射问题

转载 作者:太空宇宙 更新时间:2023-11-03 21:53:42 25 4
gpt4 key购买 nike

我正在用 Monotouch 试用 Vici CoolStorage,但似乎遇到了关系问题。使用以下内容,我尝试用一​​个调查填充数据库,然后使用 for 循环生成包含 5 个问题的列表。

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

[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); } }
}

数据库表

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))");

循环

for (int i = 1; i <= 10; i++) 
{
Question q = Question.New ();
q.Text = String.Format ("Question {0}", i);
survey.Questions.Add (q);
}
survey.Save();

最佳答案

您没有在映射字段中链接正确的外键。关系应声明为:

[OneToMany(LocalKey="SurveyId", ForeignKey="SurveyId")]
public CSList<Question> Questions ...

[ManyToOne(LocalKey="SurveyId", ForeignKey="SurveyId")]
public Survey Survey...

关于c# - 在 Monotouch 中使用 CoolStorage 的映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13270964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com