如何从Entity Framework Core查询多个时态表?

时间:2018-02-17 21:54:19

标签: c# entity-framework entity-framework-core

我的数据库中有多个时态表,我想编写一个将这些表连接在一起的查询,但是也会在某个日期使用 的数据。

我创建了以下扩展方法来帮助获取日期数据:

public static IQueryable<T> AsOf<T>(this DbSet<T> dbSet, DateTime? asOfDateTime) where T : class
{
    if (dbSet == null) throw new ArgumentNullException(nameof(dbSet));
    return asOfDateTime.HasValue
        ? dbSet.FromSql($"SELECT * FROM dbo.[{typeof(T).Name}] FOR SYSTEM_TIME AS OF {{0}}", asOfDateTime)
        : dbSet;
}

如果它是一个简单的查询,则可行:

from entity in context.Entities.AsOf(asOfDateTime)
select new Entity
{
    entity.Name
    ...

但是,如果我尝试将这些表连接在一起......

from entity in context.Entities.AsOf(asOfDateTime)
select new Entity
{
    entity.Name,
    MyProperties = from myProperty in context.MyProperties.AsOf(asOfDateTime)
                 where myProperty.EntityId == entity.EntityId
                 select new MyProperty
                 {
                     ...

然后我开始收到错误,例如

Expression of type 'Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable1[MyProperty]' cannot be used for parameter of type 'Microsoft.EntityFrameworkCore.DbSet1[MyProperty]' of method 'System.Linq.IQueryable1[MyProperty] AsOf[MyProperty](Microsoft.EntityFrameworkCore.DbSet1[MyProperty], System.Nullable`1[System.DateTime])' Parameter name: arg0

是否可以从Entity Framework Core查询多个时态表?语法是什么?

0 个答案:

没有答案