我从CreateTable获得以下异常:
“不知道System.Collections.Generic.List`1 [SurgeArrestor.SAAnswer]”
这是一个包含以下软件包的Xamarin Forms应用程序: Package list
这是我的代码:
// SAForm.cs
using System;
using System.Collections.Generic;
using SQLite;
using SQLiteNetExtensions.Attributes;
using Newtonsoft.Json;
namespace SurgeArrestor
{
public class SAForm
{
[PrimaryKey, AutoIncrement]
public long SAFormID { get; set; }
[JsonProperty(PropertyName = "_formID")]
public long FormID { get; set; }
[JsonProperty(PropertyName = "_formDate")]
public string FormDate { get; set; }
[JsonProperty(PropertyName = "_formNotes")]
public string FormNotes { get; set; }
[JsonProperty(PropertyName = "_formAnswers")]
[OneToMany(CascadeOperations = CascadeOperation.All)]
public List<SAAnswer> FormAnswers { get; set; }
}
}
// SAAnswer.cs
using System;
using SQLite;
using SQLiteNetExtensions.Attributes;
using Newtonsoft.Json;
namespace SurgeArrestor
{
[Table("SAAnswer")]
public class SAAnswer
{
public SAAnswer() { }
[PrimaryKey, AutoIncrement]
public long SAAnswerID { get; set; }
[JsonProperty(PropertyName = "_formAnswerID")]
public long FormAnswerID { get; set; }
[JsonProperty(PropertyName = "_formID")]
public long FormID { get; set; }
[JsonProperty(PropertyName = "_questionID")]
public long QuestionID { get; set; }
[JsonProperty(PropertyName = "_answer")]
public Boolean Answer { get; set; }
[ForeignKey(typeof(SAForm))]
[JsonIgnore]
public long SAFormID { get; set; }
}
}
// SAFormTable.cs
using System;
using System.Linq;
using System.Threading.Tasks;
using System.Collections.Generic;
using SQLite;
using SQLiteNetExtensions;
namespace SurgeArrestor
{
public class SAFormTable : SQLiteConnection
{
static object locker = new object();
public SAFormTable(string dbPath) : base(dbPath)
{
lock (locker)
{
CreateTable<SAForm>(); // throws exception
}
}
// MORE CODE
}
这是我的第一个Xamarin.Forms应用。我使用MVVMCross.Community.Plugin.Sqlite / SQLiteNetExtensions-MvvmCross包使用了Xamarin应用程序,并使用它来为这些类建模。
我在翻译中遗漏了什么吗?据我所知,net扩展包提供了对同一ManyToOne实现的支持。
在堆栈溢出搜索和谷歌没有提供任何具体结果,我发现的例子似乎都遵循我在这里。
感谢您的任何见解/建议。
答案 0 :(得分:0)
一对多收藏只是 - 收藏。 List
是一种特殊类型的集合,支持排序和索引 - 这是SQL数据库本身不支持的。
尝试从
更改您的媒体资源List<SAAnswer> FormAnswers { get; set; }
到
ICollection<SAAnswer> FormAnswers { get; set; }