0

複数値の外部キーを持つ 1 対多の関係を作成しようとすると、次のエラーが発生します...

**

SQLite.Net.SQLiteException : 外部キーの不一致 - 「ノード」を参照する「アクティビティ」

**

これはテーブルSQLです(わかりやすくするために簡略化しています)...

CREATE TABLE [Activity] (
  [ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, 
  [InstId_FK] numeric(18,0) NOT NULL, 
  [NodeSeq_FK] numeric(3,0) NOT NULL, 
  [ActivityType] int NOT NULL, 
  CONSTRAINT [Node_FK] FOREIGN KEY([InstId_FK], [NodeSeq_FK]) REFERENCES [Node]([ID], [NodeSeq])ON DELETE CASCADE);

CREATE TABLE [Node] (
  [ID] NUMERIC(18) NOT NULL CONSTRAINT [ID] REFERENCES [Trip]([ID]) ON DELETE CASCADE, 
  [NodeSeq] numeric(3,0) NOT NULL, 
  [Status] int, 
  [Name] nvarchar(30) NOT NULL, 
  CONSTRAINT [sqlite_autoindex_TripNode_1] PRIMARY KEY ([ID], [NodeSeq]));

そして私のC#モデル(わかりやすくするために再び簡略化)...

public class TripNodeActivity : LocationAware
{
    [PrimaryKey, AutoIncrement, ForeignKey(typeof(Node),Order = 1)]
    public int Id { get; set; }

    [Column("InstId_FK")]
    public int InstIdFk { get; set; }

    [Column("NodeSeq_FK"), ForeignKey(typeof(Node),Order = 2)]
    public int NodeSeqFk { get; set; }

    public int ActivityType { get; set; }
}

public class Node
{
    public Node(){Activity = new List<Activity>();}

    [OneToMany(CascadeOperations = CascadeOperation.All)] 
    public List<Activity> Activity{get;set;}  

    [PrimaryKey, ForeignKey(typeof(Trip))]
    public int Id { get; set; }

    [PrimaryKey]
    public int NodeSeq { get; set; }

    public int Status { get; set; }
    public String Name { get; set; }
}

このエラーは、次を使用してモデルを保存しようとすると発生します。

SQLiteConnection.InsertOrReplaceWithChildren(NodeFromAbove,true)
4

1 に答える 1