使用带有SQLiteNetExtensions的ManyToOne关系无法识别列表
本文关键字:关系 识别 列表 ManyToOne SQLiteNetExtensions | 更新日期: 2023-09-27 17:59:17
我从CreateTable中得到以下异常:
"不了解System.Collections.Generic.List`1[SurgerArrestor.SAnswer]"
这是一款Xamarin Forms应用程序,包含以下软件包:包装清单
这是我的代码:
// 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。表单应用程序。我曾使用MVVMCross使用Xamarin应用程序。社区插件。Sqlite/SQLiteNetExtensions MvvmCross包,并使用它对这些类进行建模。
我在翻译中遗漏了什么吗?据我所知,net扩展包提供了对相同ManyToOne实现的支持。
在堆栈溢出和谷歌中搜索并没有提供任何具体的结果,我发现的例子似乎都遵循了我在这里的做法。
感谢您的任何见解/建议。
一对多集合就是集合。List
是一种特殊类型的集合,它支持排序和索引,而SQL数据库本身并不支持这种功能。
尝试从更改您的属性
List<SAAnswer> FormAnswers { get; set; }
至
ICollection<SAAnswer> FormAnswers { get; set; }