实体框架核心 2 看不到 SQLITE 扩展



所以使用实体框架 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之外,我似乎在文档中找不到任何内容。

谢谢

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

.HasDefaultValueSql("CURRENT_TIMESTAMP");

昨天将测试项目升级到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中直观地检查新创建的列定义来对其进行测试。

最新更新