SS OrmLite:加入和过滤列名时列名不明确

SS OrmLite: Ambiguous column name when joining and filtering on the column name

我有两个表(代码优先),它们共享一个公共列名称“Status”,顺便说一句,它用在了 Where 子句中。

这会导致 不明确的列 错误。

var q = db.From<Process>()
.Where<Process>(p => Sql.In(p.Status, enProcessStatus.READY, enProcessStatus.ACTIVE))
.Join<Activity>()

db.SelectMulti<Process,Activity>(q);

当我使用 SelectMulti 时,错误也会以常规 Select 出现(仅用于调试目的)。

我发现是 Where 子句导致了问题,因为它过滤了两个表中具有相同名称的列。我已经尝试 not 使用 Sql.In,但没有帮助。

在 C# 内部,我指的是哪个对象没有歧义,编译器知道它是 Process 而不是 Activity,但是当涉及到 SQL 时,它就不再起作用了。

如何解决?

始终在查询开始时指定您的联接,即在 From<T>() 之后立即:

var q = db.From<Process>()
  .Join<Activity>()
  .Where<Process>(p => Sql.In(p.Status, enProcessStatus.READY));

var results = db.SelectMulti<Process,Activity>(q);