我使用的是SubSonic 3.0.0.3,我似乎無法獲得ActiveRecord .tt文件來識別和生成我的SQLite數據庫中的外鍵和關係代碼。SubSonic不識別SQLite外鍵
我認爲它產生的一切都很好,但在看了其他片段後,看起來應該有更多生成的代碼,而不僅僅是我的每個表格的ActiveRecord.cs
和Structs.cs
中的單個類。尋找Structs.cs
,IsForeignKey
總是false
每列,即使是我有一個外鍵定義的。此外,每個生成的ActiveRecord類中的每個Foreign Keys
區域都是空的。
我在我的項目中使用VS2008引用了SubSonic 3.0.0.3,System.Data.SQLite 1.0.66.0和System.Data.SQLite.Linq 2.0.38.0。我使用SQLite Expert Personal 3.1.0.2076創建了數據庫。我製作了一些虛擬表格來測試SubSonic如何處理一個:許多和許多:許多關係。這裏的DDL SQLite的專家吐出來爲我的小數據庫:
CREATE TABLE [Person] (
[PersonID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[PersonName] TEXT NOT NULL,
[PersonAge] INT NOT NULL
);
CREATE TABLE [Group] (
[GroupID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[GroupName] TEXT NOT NULL,
[GroupDescription] TEXT NOT NULL
);
CREATE TABLE [Dog] (
[DogID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[PersonID] INT NOT NULL CONSTRAINT [DogPersonFK] REFERENCES [Person]([PersonID]) ON DELETE CASCADE ON UPDATE CASCADE,
[DogName] TEXT NOT NULL);
CREATE TABLE [GroupPersons] (
[GroupID] INTEGER NOT NULL CONSTRAINT [GroupPersonToGroupFK] REFERENCES [Group]([GroupID]) ON DELETE CASCADE ON UPDATE CASCADE,
[PersonID] INTEGER NOT NULL CONSTRAINT [GroupPersonToPersonFK] REFERENCES [Person]([PersonID]) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT [sqlite_autoindex_GroupPersons_1] PRIMARY KEY ([GroupID], [PersonID]));
我知道外鍵被啓用,並在數據庫的工作 - SQLite的專家說,他們是在和我在一個地方更改的數據,就像人的是PersonID它確實會更改Dog和GroupPersons表中的PersonID。我嘗試將數據庫重新添加到項目中,'運行自定義工具'以使.tt文件再次執行,甚至刪除它們並將它們添加回來。我可以得到一個簡單的項目來執行簡單的查詢和插入,但是我現在試着改變一個Person,Dog或Group和x.Save()的主鍵,但是System.Data.SQLite拋出了一個異常所有三個,在Save()上說SQLite error near "WHERE":syntax error.
。
對於我下一步應該嘗試做的任何建議?
在'x.Save()'函數中使用的查詢是什麼? – MPelletier 2010-08-24 03:41:35