因此,对于实体框架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。
由于
答案 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中直观地检查新创建的列定义来测试它。