0

如果我有一个由所有实体实现的通用接口,例如:

public interface IEntity {
    int Id { get; set; }
    DateTime ValidFrom { get; set; }
    DateTime? ValidTo { get; set; }
}

如果 ValidTo 为空,是否可以过滤掉作为查询的一部分返回的对象 - 只返回仍然有效的对象。

我得到这个想法的地方是 Julia Lerman 和 Rowan Miller 在 PEF:DbContext 中使用类似的东西来设置断开连接的实体的状态,但是他们通过状态管理器来做到这一点,这允许他们遍历实现特定接口的所有实体 - 我想做类似的事情,但是在涉及子实体的查询上。

我正在使用 SQL Server 2012、EF5 和 .Net 4.5。

4

1 回答 1

0

您引用的示例依赖于ChangeTracker.Entries<T>()接受接口作为泛型类型参数的方法。当然,这一切都发生在内存中,不涉及到 SQL 的转换。

在将 linq 转换为 SQL 时,实体框架(还)不支持接口,主要是因为DbSet<T>必须基于一个具体的类。

您唯一的机会是创建一个基本类型而不是一个接口,并让您的实体从中派生。

于 2012-12-04T19:03:41.687 回答