我使用的是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