仅返回基类的Starcounter查询

时间:2015-05-28 08:26:34

标签: starcounter

让我们假设我们有非抽象基类A,它有一个专门的类B. 我现在想要查询只返回A的实例,而不是B.这可以实现吗?

1 个答案:

答案 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