让我们假设我们有非抽象基类A,它有一个专门的类B. 我现在想要查询只返回A的实例,而不是B.这可以实现吗?
答案 0 :(得分:0)
<强> EDIT2 强>
Starcounter implements运算符IS
,它允许检查对象是否属于给定类型。但是,检查包括儿童,因此没有帮助。缺少运算符IS NOT
的实现,我在最新版本的Starcounter中测试后发现了它。
Starcounter的问题跟踪器中有一个ticket。
所以问题的答案是:如果没有在当前版本的Starcounter中使用SQL选择子类的对象,则无法选择基类的对象。在迭代查询结果期间,必须在C#中实现过滤器。应用程序的一个示例,它过滤掉B
:
using System;
using Starcounter;
class Program {
static void Main() {
Db.Transact(delegate {
new A { name = "a1" };
new B { name = "b1" };
});
foreach (A a in Db.SQL<A>("SELECT a FROM A a"))
if (!(a is B))
Console.WriteLine(a.name);
}
}
[Database]
public class A {
public String name;
}
public class B : A {
}
第一次执行程序的结果是:
a1