标签: temporal

如何将System-Versioned Temporal Table与Entity Framework一起使用?

我可以在SQL Server 2016中使用时态表.遗憾的是,Entity Framework 6还不知道这个功能.是否有可能使用实体框架6 使用新的查询选项(请参阅msdn)?

我创建了一个带有员工时态表的简单演示项目:

在此输入图像描述

我使用edmx将表映射到实体(感谢Matt Ruwe):

在此输入图像描述

使用纯sql语句一切正常:

using (var context = new TemporalEntities())
{
    var employee = context.Employees.Single(e => e.EmployeeID == 2);
    var query = 
      $@"SELECT * FROM [TemporalTest].[dbo].[{nameof(Employee)}]
         FOR SYSTEM_TIME BETWEEN
         '0001-01-01 00:00:00.00' AND '{employee.ValidTo:O}'
         WHERE EmployeeID = 2";
    var historyOfEmployee = context.Employees.SqlQuery(query).ToList();
}    
Run Code Online (Sandbox Code Playgroud)

是否可以在没有纯SQL的情况下将历史记录功能添加到每个实体?我的解决方案作为实体扩展与反射来操纵SQL查询IQuerable并不完美.是否有现有的扩展或库来执行此操作?

编辑:(基于Pawel的评论)

我试图使用表值函数:

CREATE FUNCTION dbo.GetEmployeeHistory(
    @EmployeeID int, 
    @startTime datetime2, 
    @endTime datetime2)
RETURNS TABLE
AS
RETURN 
(
    SELECT 
        EmployeeID,
        [Name], 
        Position, 
        Department, 
        [Address], …
Run Code Online (Sandbox Code Playgroud)

c# sql entity-framework temporal sql-server-2016

20
推荐指数
1
解决办法
3956
查看次数

在现实代码中混淆时间和空间位置

我正在阅读这个问题,我想更多地询问他展示的代码,即

for(i = 0; i < 20; i++)
    for(j = 0; j < 10; j++)
        a[i] = a[i]*j;
Run Code Online (Sandbox Code Playgroud)

问题是,

  1. 我理解时间局部性,我认为对i和j的引用应该是时间局部性.我对吗?
  2. 我也理解空间局部性,因为我链接答案的问题是对[i]的引用应该是空间局部性.我对吗?
  3. 那个人说,

    "内部循环在访问[i]十次时会调用相同的内存地址,这是我猜的时间局部性的一个例子.但是在上面的循环中是否还有空间局部性?"

    我不同意他的猜测.由[a]生成的引用应该是空间局部性(它们将引用块中的下一个元素).我对吗?

computer-science spatial computer-architecture temporal

13
推荐指数
2
解决办法
2万
查看次数

当程序将受益于预取和非临时加载/存储?

我做了一个测试

    for (i32 i = 0; i < 0x800000; ++i)
    {
        // Hopefully this can disable hardware prefetch
        i32 k = (i * 997 & 0x7FFFFF) * 0x40;

        _mm_prefetch(data + ((i + 1) * 997 & 0x7FFFFF) * 0x40, _MM_HINT_NTA);

        for (i32 j = 0; j < 0x40; j += 0x10)
        {
            //__m128 v = _mm_castsi128_ps(_mm_stream_load_si128((__m128i *)(data + k + j)));
            __m128 v = _mm_load_ps((float *)(data + k + j));

            a_single_chain_computation

            //_mm_stream_ps((float *)(data2 + k + j), v);
            _mm_store_ps((float *)(data2 …
Run Code Online (Sandbox Code Playgroud)

c sse prefetch temporal

11
推荐指数
1
解决办法
1622
查看次数

在Java中查看当前时间是否在当天的特定时间范围内

我确信这在1000个不同的地方完成了1000次.问题是我想知道是否有更好/标准/更快的方法来检查当前"时间"是否在hh:mm:ss格式中给出的两个时间值之间.例如,我的大业务逻辑不应该介于两者之间18:00:00 and 18:30:00.所以这就是我的想法:

 public static  boolean isCurrentTimeBetween(String starthhmmss, String endhhmmss) throws ParseException{
  DateFormat hhmmssFormat = new SimpleDateFormat("yyyyMMddhh:mm:ss");
  Date now = new Date();
  String yyyMMdd = hhmmssFormat.format(now).substring(0, 8);

  return(hhmmssFormat.parse(yyyMMdd+starthhmmss).before(now) &&
    hhmmssFormat.parse(yyyMMdd+endhhmmss).after(now));
 }
Run Code Online (Sandbox Code Playgroud)

示例测试用例:

  String doNotRunBetween="18:00:00,18:30:00";//read from props file
  String[] hhmmss = downTime.split(",");
  if(isCurrentTimeBetween(hhmmss[0], hhmmss[1])){
   System.out.println("NOT OK TO RUN");
  }else{
   System.out.println("OK TO RUN");
  }
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是更好的代码

  • 在表现
  • 看起来
  • 正确

我不想要的

  • 第三方图书馆
  • 异常处理辩论
  • 变量命名约定
  • 方法修饰符问题

java datetime date temporal

10
推荐指数
2
解决办法
2万
查看次数

.NET中的时态表达式库

有没有人知道处理事件和重复事件的库,比如像Runt(http://runt.rubyforge.org/)或TExp(http://texp.rubyforge.org/)这样的ruby存在的时态表达式库.这些库非常适合我需要的东西,但我需要> .NET Framework中的东西.

谢谢!

.net expression temporal

10
推荐指数
1
解决办法
508
查看次数

双时态NoSQL数据库是否有任何设计模式?

我很好奇是否有人已经实现甚至知道在NoSQL平台上构建的任何双时态数据库(例如,riak).

database database-design temporal-database temporal nosql

10
推荐指数
1
解决办法
3572
查看次数

日期字符串可以由DateTimeFormatter验证而不会捕获异常吗?

考虑到通过异常的流控制被(被许多人)视为反模式,是否可以使用时态库(java.time.*)来验证字符串表示有效日期,而不会捕获异常?

请考虑以下代码,它依赖于内部爆炸:

public static boolean isValidDateFormat(String date, DateTimeFormatter formatter) {
    try {
        formatter.parse(date);
        return true;
    } catch (DateTimeParseException e) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

这可以在不发生解析爆炸的情况下实现吗?有没有类似的东西formatter.isValid(date)(即使内部爆炸 - 这将取决于幕后"JDK impl").

java exception-handling temporal

10
推荐指数
1
解决办法
1876
查看次数

时间序列数据的主成分分析(PCA):空间和时间模式

假设我有从1951年到1980年的100个站点的年降水量数据.在一些论文中,我发现人们将PCA应用于时间序列,然后绘制空间载荷图(值为-1到1),并绘制时间序列个人电脑 例如,https://publicaciones.unirioja.es/ojs/index.php/cig/article/view/2931/2696中的图6 是PC的空间分布.

prcomp在R中使用函数,我想知道我怎么能做同样的事情.换句话说,如何从prcomp函数的结果中提取"空间模式"和"时间模式" ?谢谢.

set.seed(1234)
rainfall = sample(x=100:1000,size = 100*30,replace = T)
rainfall=matrix(rainfall,nrow=100)
colnames(rainfall)=1951:1980
PCA = prcomp(rainfall,retx=T)
Run Code Online (Sandbox Code Playgroud)

或者,有真实的数据在https://1drv.ms/u/s!AnVl_zW00EHegxAprS4s7PDaYQVr

r spatial temporal pca

10
推荐指数
1
解决办法
1万
查看次数

使用实体框架优化时间属性

我想使用类似于此处描述的方法实现时态属性,使用Entity Framework代码优先进行数据库存储.

我希望它针对获取当前值进行了优化,并且对历史记录进行了延迟加载,但是我不希望在父实体中为每次使用添加样板代码,就像上面链接中的方法一样.

目前我有类似下面的代码,按照惯例导致数据库模式如下所示代码.

这将按我的需要运行,但出于性能原因,我想避免获取当前属性值所需的连接(即我想将TemporalStrings.CurrentValue DB列移动到Entities.Name).

如果我试试

modelBuilder.Entity<Entity>().Property(o => o.Name.CurrentValue).HasColumnName("Name");
Run Code Online (Sandbox Code Playgroud)

它不起作用.我得到一个例外

The type 'ConsoleApplication1.TemporalString' has already been configured as an entity type. It cannot be reconfigured as a complex type.
Run Code Online (Sandbox Code Playgroud)

有什么方法可以实现这种映射,还是有更好的方法来实现这个功能?

码:

public class TemporalString
{
    public int Id { get; set; }
    public string CurrentValue { get; set; } // Setter would be customized to append to History.
    public virtual List<TemporalStringValue> History { get; set; }
    // Other methods such as string ValueAt(DateTime) would exist.
}

public …
Run Code Online (Sandbox Code Playgroud)

entity-framework temporal

9
推荐指数
0
解决办法
1231
查看次数

避免系统版本表中的模式不匹配

寻找解决方法:

Error: SQL71609: System-versioned current and history tables do not have matching schemes. Mismatched column: 'XXXX'.
Run Code Online (Sandbox Code Playgroud)

尝试在SSDT中为Visual Studio 2015使用SQL 2016系统版本(时间)表时.

我已经定义了一个基本表:

CREATE TABLE [dbo].[Example] (
    [ExampleId] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [ExampleColumn] VARCHAR(50) NOT NULL,
    [SysStartTime] datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL,
    [SysEndTime] datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL,
    PERIOD FOR SYSTEM_TIME (SysStartTime,SysEndTime)
)
WITH (SYSTEM_VERSIONING=ON(HISTORY_TABLE=[history].[Example]))
GO
Run Code Online (Sandbox Code Playgroud)

(假设[history]在SSDT中正确创建了模式).这是第一次建立良好.

如果我以后做出改变:

CREATE TABLE [dbo].[Example] (
    [ExampleId] INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
    [ExampleColumn] …
Run Code Online (Sandbox Code Playgroud)

sql-server temporal sql-server-data-tools visual-studio-2015 sql-server-2016

9
推荐指数
2
解决办法
2129
查看次数