小巧玲珑多制图PARENT_ID
问题描述:
我有一个SQLite表 “短语”,如:小巧玲珑多制图PARENT_ID
CREATE TABLE [phrases] (
[id] INTEGER PRIMARY KEY AUTOINCREMENT,
[phrase] CHAR,
[parent_id] INTEGER);
,我和演示数据填充:
id | phrase | parent_id
1 | parent phrase | (null)
2 | some child 1 | 1
3 | some child 2 | 1
而且我有一个像C#模式:
class Phrase
{
int id { get; set; }
string phrase { get; set; }
int parent_id { get; set; }
Phrase parent { get; set; }
}
我该如何正确使用小巧玲珑的这个表映射到这个类? 谢谢。
答
您需要添加到您的选择查询词组孩子(我用的MS-SQL):
SELECT p.id AS id,
p.phrase AS phrase,
p.parent_id AS parent_id,
c.id AS id,
c.phrase AS phrase
FROM phrases p
LEFT JOIN phrases c ON p.id = c.parent_id
小巧玲珑能够通过使您的标识列被命名编号或ID的假设来返回的行分裂(默认)。
C#:
public IEnumerable<Phrase> GetPhrase()
{
const string sql = @" SELECT p.id AS id,
p.phrase AS phrase,
p.parent_id AS parent_id,
c.id AS id,
c.phrase AS phrase
FROM phrases p
LEFT JOIN phrases c ON p.id = c.parent_id";
using (var connection = OpenConnection(_connectionString))
{
return connection.Query<Phrase, Phrase, Phrase>(sql, (p, c) =>
{
p.parent = c;
return p;
}, commandType: CommandType.Text);
}
}
- 这项工作只为一个一级子到父(不嵌套)
非常感谢你,它工作正常! – devspec
大:)你可以投票(我会很高兴) –
我不能投票 - 我有olny 6声誉。对不起。 – devspec