2016-04-15 37 views
0

SQLiteデータベースをSQLite.NetとSQLiteNetExtensionsを使用してセットアップしようとしています。私はデータベースに作成するために外部キーを取得することはできません。私はすべてのテーブルを落として、モデルクラスを使ってそれらを再作成しました。 SQLiteマネージャーでプラグマをチェックし、外部キーがオンになっています。私の例では、プロットは多くの木を持つことができます。私は何が欠けているかもしれないかについての示唆?SQLiteデータベースでSQLiteデータベースで外部キーを作成しない

public class Tree 
    { 
     [PrimaryKey, AutoIncrement] 
     public int TreeId { get; set; } 
     [NotNull] 
     public int TreeNumber { get; set; } 
     [NotNull] 
     public double Dbhob { get; set; } 

     public double? Height { get; set; } 
     [NotNull,Default(value: false)] 
     public bool? HeightTree { get; set; } 
     public string QualityCode { get; set; } 
     [ForeignKey(typeof(Plot))] 
     public int PlotId { get; set; } 
     [ManyToOne] 
     public Plot PlotInverse { get; set; } 


    } 



    public class Plot 
    { 
     [PrimaryKey, AutoIncrement] 
     public int PlotId { get; set; } 
     [NotNull, Unique] 
     public System.Guid PlotGuid { get; set; } 
     [NotNull, MaxLength(60)] 
     public string Strata { get; set; } 
     [NotNull, MaxLength(60)] 
     public string PlotNumber { get; set; } 

     public DateTime MeasureDate { get; set; } 
     [MaxLength(70)] 
     public String AssessorLead { get; set; } 
     [MaxLength(60)] 
     public String AssessorCrew { get; set; } 
     [Default(value: 0)] 
     public double PlotArea { get; set; } 
     public double BasalArea { get; set; } 

     [OneToMany("PlotId","PlotId")] 
     public List<Tree> Trees { get; set; } 
    } 

答えて

0

外部キー属性が外部キーとSQLiteの-Netの拡張機能をサポートし、それの上に構築されていないのsqlite-ネットなどのSQLiteデータベースに作成されていません。それらは実行時に関連するオブジェクトを保存してロードするために使用されます。サイドノートとして


、あなたは、この行を変更する必要があります

[OneToMany("PlotId","PlotInverse")] 
public List<Tree> Trees { get; set; } 

または一緒にそれをすべて削除し、自動検出は、その魔法をやらせる:

これに

[OneToMany("PlotId","PlotId")] 
public List<Tree> Trees { get; set; } 

[OneToMany] 
public List<Tree> Trees { get; set; }