2016-07-29 4 views
0

ich die folgende Ausnahme von Create erhalten:Liste nicht mit SQLiteNetExtensions mit ManyToOne Beziehung anerkannt

„Sie wissen nicht, über System.Collections.Generic.List`1 [SurgeArrestor.SAAnswer]“

Dies ist Bildet eine Xamarin App mit den folgenden Paketen: Package list

Hier ist mein Code:

// 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 
} 

Diese ist meine erste Xamarin.Forms App. Ich habe mit einer Xamarin App mit den MVVMCross.Community.Plugin.Sqlite/SQLiteNetExtensions-MvvmCross-Paketen gearbeitet und diese zum Modellieren dieser Klassen verwendet.

Habe ich etwas in der Übersetzung verpasst? Soweit ich das beurteilen kann, bietet das net extensions Paket Unterstützung für die gleiche ManyToOne Implementierung.

Suchen im Stack Overflow und Google hatte keine konkreten Ergebnisse und die Beispiele, die ich gefunden habe alle scheinen zu folgen, was ich hier habe.

Vielen Dank für alle Einsichten/Vorschläge.

Antwort

0

One-to-Many-Sammlungen sind genau das - Sammlungen. List ist eine spezielle Art von Sammlung, die das Ordnen und Indexieren unterstützt - etwas, das in SQL-Datenbanken nicht von Natur aus unterstützt wird.

Versuchen Sie Ihr Eigentum von

List<SAAnswer> FormAnswers { get; set; } 

zu

ICollection<SAAnswer> FormAnswers { get; set; } 
Wechsel
Verwandte Themen