複数値の外部キーを持つ 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)