使用带有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实现的支持。

在堆栈溢出和谷歌中搜索并没有提供任何具体的结果,我发现的例子似乎都遵循了我在这里的做法。

感谢您的任何见解/建议。

使用带有SQLiteNetExtensions的ManyToOne关系无法识别列表

一对多集合就是集合List是一种特殊类型的集合,它支持排序和索引,而SQL数据库本身并不支持这种功能。

尝试从更改您的属性

List<SAAnswer> FormAnswers { get; set; }

ICollection<SAAnswer> FormAnswers { get; set; }