带有增加时间戳的SQL插入有序列表

时间:2017-10-06 15:09:16

标签: c# sql-server entity-framework

在我正在处理的应用程序中,我存储的“Notes”基本上包含一些任意(用户定义的)文本及其创建时间。时间非常重要,这些Notes需要按时间排序时准确排序。现在,当插入Note时,SQL数据库本身会分配时间,并且它适用于一次插入一个Note。

但是,新要求导致能够创建多个笔记并在单个请求中提交。当稍后从数据库中检索这些注释时,按时间排序它们将导致请求中提供的原始顺序。我担心的是,通常插入列表要么不保证单个元素的顺序,要么根本不保证不同的时间。

有一个简单的解决方案,即使用单独的事务简单地按顺序插入每个音符。根据我对SQL的理解,相对于进行单个事务,这会对性能产生重大影响,因此如果替代方案合理,我希望避免这种情况。

有关更多背景信息,应用程序是用C#编写的,并使用Entity Framework与数据库定义的Code First进行通信。 Notes在ASP.NET MVC客户端中创建,然后发送到处理数据库访问的ASP.NET Web API服务器。据我所知,它们都没有使用.NET Core。

2 个答案:

答案 0 :(得分:0)

当您说数据库创建时间戳时,您的意思是该列的默认值为SYSDATETIME()吗?如果是这样,您可以通过在创建注释时在代码中设置date属性来覆盖它。这样,您可以在保存单个事务的同时保留按时间顺序排列。

答案 1 :(得分:0)

Notes实体只需要一个NoteId标识列。 SQL Server保证以行的顺序分配标识值,即使在单个语句中插入多行也是如此。然后,您可以通过NoteId订购Notes以按插入顺序检索它们。