实体框架核心2没有看到sqlite扩展

时间:2017-08-15 03:47:32

标签: entity-framework-core .net-core-2.0

因此,对于实体框架1.1,我有像这样的实体

 modelBuilder.Entity<Resolution>()
      .Property(r => r.Created)
      .ValueGeneratedOnAddOrUpdate()
      .ForSqliteHasColumnType("Timestamp")            
      .ForSqliteHasDefaultValueSql("CURRENT_TIMESTAMP");

 modelBuilder.Entity<Resolution>()
      .Property(r => r.Updated)
      .ForSqliteHasColumnType("Timestamp")
      .IsRequired();

工作得很好。升级到.net核心2.0和实体框架2.0之后

 .ForSqliteHasColumnType("Timestamp")

似乎不再可用了。事实上,所有“ForSqlite *”功能都不存在。

我将“Microsoft.EntityFrameworkCore.Sqlite”升级到2.0。我有

using Microsoft.EntityFrameworkCore;

他们改变了什么吗?我似乎无法在文档中找到任何内容,然后sql提供程序不向后兼容.NET Core 1.1。

由于

2 个答案:

答案 0 :(得分:2)

我没有找到任何关于这些变化的说法。但您可以在EF Core 2.0中使用以下代码。

.HasDefaultValueSql("CURRENT_TIMESTAMP");

答案 1 :(得分:0)

我昨天将测试项目升级到EF Core 2.0之后遇到了类似的问题,在我的情况下,数据库不是SQLite,而是MS SQL Server。

我不得不替换

 b.Property(e => e.StartDate).IsRequired().ForSqlServerHasColumnType("Date"); 
 b.Property(e => e.LastModified).IsRequired().ForSqlServerHasColumnType("SmallDateTime");

使用:

 b.Property(e => e.StartDate).IsRequired().HasColumnType("Date"); 
 b.Property(e => e.LastModified).IsRequired().HasColumnType("SmallDateTime");

但之后又恢复了工作。我通过重新创建数据库并在MS SQL Server Management Studio中直观地检查新创建的列定义来测试它。