我正在尝试使用 Simple.Data 进行简单的连接,但无法正常工作。我确定我错过了一些东西,但我不明白......
SQL:
CREATE TABLE TestA
(
ID INTEGER PRIMARY KEY,
Txt TEXT
);
CREATE TABLE TestB
(
ID INTEGER PRIMARY KEY,
Aref INTEGER,
Txt TEXT,
FOREIGN KEY(Aref) REFERENCES TestA(ID)
);
INSERT INTO TestA
VALUES (1, 'This is Test A!');
INSERT INTO TestB
VALUES (1, 1, 'This is TestB!');
C#:
db.TestB.Find(db.TestB.Aref = db.TestA.ID);
如果我运行代码,我会得到一个 RuntimeBinderException:“Simple.Data.ObjectReference”不包含“Aref”的定义。
我正在使用 Simple.Data.Core/Ado v0.12.2.2 和 Simple.Data.Sqlite v0.12.2.4
我已经检查了文档,但看不到我的错误。我做错了什么?
编辑: 我也尝试了索引样式:
db["TestB"].Find(db["TestB"]["TestA"]["ID"] == db["TestB"]["Aref"]);
生成的 SQL 如下所示:
select [TestB].* from [TestB] JOIN [TestA] ON ([TestA].[Aref] = [TestB].[ID]) where [TestA].[ID] = [TestB].[Aref]
好像ON部分的表是倒置的,其实应该是WHERE部分的样子……