我在选择相同的产品时遇到了一些问题 model
两次和更多次 ORMLite
.
我的问题有很多种 LeftJoin<Model1,Model2>
,然后它会这样做:
.LeftJoin<Model2, Model3>((x, y) => x.id1== y.id1, dbConnection.JoinAlias("Alias1")
.LeftJoin<Model2, Model3>((x, y) => x.id2 == y.id2, dbConnection.JoinAlias("Alias2")
.LeftJoin<Model2, Model3>((x, y) => x.id3 == y.id3, dbConnection.JoinAlias("Alias3")
.LeftJoin<Model2, Model3>((x, y) => x.id4 == y.id4, dbConnection.JoinAlias("Alias4"))
我怎么用 SelectMulti
得到4次 Model3
? 我的意思是这样的:
db.SelectMulti<Model1,Model2,Model3,Model3,Model3,Model3>(query);
我很抱歉,如果我不清楚,但我不能张贴真正的代码由于保密协议。
另外,我和你一起工作 C#
更新
我根据@mythz的建议添加了以下代码(这是答案的最后一部分,因为我现在无法升级):
String customSelection = typeof(Model1).GetModelMetadata().Alias + ".*, 0 EOT," +
typeof(Model2).GetModelMetadata().Alias + ".*, 0 EOT," +
"Alias1.*, 0 EOT," +
"Alias2.*, 0 EOT," +
"Alias3.*, 0 EOT," +
"Alias4.*, 0 EOT";
然后,在我的查询中,我添加了以下内容:
.Select(customSelection);
现在我试着得到这样的结果:
dbConnection.Select<Model1, Model2, Model3, Model3, Model3, Model3>(query);
这导致了一个编译错误,它告诉我 IDbConnection
不包含的定义 Select
和一个 Select
方法接受类型的第一个参数 IDbConnection
找不到(编译器告诉我,在意大利语中,我重新措辞)。
编译器的错误代码是 CS1061
.
1条答案
按热度按时间tyu7yeag1#
你将不能使用
SelectMulti
用于选择具有联接别名的表的api。在ormlite的主页中有一个从多个具有连接别名的表中进行选择的示例:当需要更精细的定制时,可以将定制sql与动态resultsetapi一起使用。
我刚刚添加了对在这个提交中指定自定义表select的支持,它允许您使用自定义别名选择表,例如:
此更改可从myget上的v5.0.3中获得。
如果无法升级,则可以使用自定义选择来实现相同的结果,例如: