相关疑难解决方法(0)

如何将SQL Server localDB升级到较新版本?

是否可以从2012年升级到2014年的SqlServer localDB?

我们目前使用的是SQL Server 2012的版本11.我需要从SQL Server 2014升级到版本12.

我希望能够在不丢失表和数据的情况下完成.

我安装了一个新的localDB但是我没有我的数据.它还有另一个名称,我无法真正更改配置文件,因为它是一个团队项目.

我尝试使用命令行sqlLocalDB工具创建一个名为v11.0的2014版本,但它在旧的2012版本中以任何方式创建它.

C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create v11.0
LocalDB instance "v11.0" created with version 11.0.3000.0.

C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create v12.0
LocalDB instance "v12.0" created with version 12.0.2000.8.

C:\Program Files\Microsoft SQL Server\120\Tools\Binn>sqllocaldb create aaaaa
LocalDB instance "aaaaa" created with version 12.0.2000.8.
Run Code Online (Sandbox Code Playgroud)

为什么命名v11.0会改变使用哪个版本?

如何升级现有的v11.0?

sql-server upgrade localdb

24
推荐指数
3
解决办法
3万
查看次数

如何将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
查看次数

实体框架的快照历史记录

我一直在寻找一些使用Entity Framework的审​​计钩子.其中许多都显示旧的/新的价值比较.这对于审计跟踪非常有用,但我正在寻找快照对象.

例如......假设我有一个管理产品的应用程序.产品具有多个属性和关联的其他对象.假设我将对象更改了10次.我们还要说,重要的是我可以查看这些对象更改的屏幕(不是审计跟踪,而是以只读格式实际显示的屏幕).我感兴趣的是能够为所有这10个更改(取决于我想看到的)检索原始EF产品对象(包含所有相关数据)并使用它来绑定到我的屏幕.

如果我正在使用SQL Server,那么我现在应该为序列化对象使用什么类型(XML,blob等)?这样做有意义吗?

c# versioning audit entity-framework

15
推荐指数
2
解决办法
1680
查看次数

EF Core 6.0 时态表 - 添加迁移 - 周期属性“Comment.PeriodStart”必须是影子属性

我们最近将我们的项目升级到Microsoft.EntityFrameworkCore 6.0.0. 此版本支持开箱即用的 SQL Server 时态表。

https://devblogs.microsoft.com/dotnet/prime-your-flux-capacitor-sql-server-temporal-tables-in-ef-core-6-0/

/sf/answers/4901243791/

自 Entity Framework Core 3.1 起,我们就使用时态表并使用自定义迁移,如下所述:

/sf/answers/4534366091/

/sf/answers/4497118391/

简单地遵循微软的指南当然是行不通的,因为默认的列名称是PeriodStartandPeriodEnd而不是我们的SysStartTimeand SysEndTime。历史表名称也不匹配。

modelBuilder
    .Entity<Comment>()
    .ToTable("Comments", b => b.IsTemporal());
Run Code Online (Sandbox Code Playgroud)

迁移创建:

protected override void Up(MigrationBuilder migrationBuilder)
{
    migrationBuilder.AlterTable(
        name: "Comments")
        .Annotation("SqlServer:IsTemporal", true)
        .Annotation("SqlServer:TemporalHistoryTableName", "CommentsHistory")
        .Annotation("SqlServer:TemporalHistoryTableSchema", null)
        .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd")
        .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart");

    migrationBuilder.AddColumn<DateTime>(
        name: "PeriodEnd",
        table: "Comments",
        type: "datetime2",
        nullable: false,
        defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified))
        .Annotation("SqlServer:IsTemporal", true)
        .Annotation("SqlServer:TemporalPeriodEndColumnName", "PeriodEnd")
        .Annotation("SqlServer:TemporalPeriodStartColumnName", "PeriodStart");

    migrationBuilder.AddColumn<DateTime>(
        name: …
Run Code Online (Sandbox Code Playgroud)

.net c# entity-framework entity-framework-core temporal-tables

5
推荐指数
1
解决办法
3282
查看次数

实体框架快照历史

我试图弄清楚如何使用 Code First Entity Framework 并保留某些表的快照历史记录。这意味着对于我想要跟踪的每个表,我希望有一个后缀为 _History 的重复表。每次我对跟踪表行进行更改时,在新数据保存到原始表之前,数据库中的数据都会复制到历史表中,版本列会增加。

所以想象我有一个名为 Record 的表。我有一排(ID:1,名称:一,版本:1)。当我将其更改为 (ID1:Name:Changed,Version:2) 时,Record_History 表将获得一行 (ID:1,Name:One,Version:1)。

我已经看到了很好的例子,并且知道有一些库可以使用实体框架来保存更改的审计日志,但我需要在 SQL 报告的每个修订版中获得实体的完整快照。

在我的 C# 中,我有一个基类,我所有的“跟踪”表等效实体类都继承自:

public abstract class TrackedEntity
{
    [Column(TypeName = "varchar")]
    [MaxLength(48)]
    [Required]
    public string ModifiedBy { get; set; }

    [Required]
    public DateTime Modified { get; set; }

    public int Version { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的实体类之一的示例是:

public sealed class Record : TrackedEntity
{
    [Key]
    public int RecordID { get; set; }

    [MaxLength(64)]
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在对于我坚持的部分。我想避免为我创建的每个实体输入和维护一个单独的 …

c# entity-framework ef-code-first

4
推荐指数
1
解决办法
2959
查看次数